❶ 在java中沒有C#的delegate類型,ref和out類型的參數,那在Java中如何變通地實現相同功能
delegate你可以用相關對象的addXXXListener實現,如果沒有你想要的listener,你可以自己寫一個,然後在set方法裡面通知這些listener就可以了,比方你要監視Obj的屬性變化,可以這樣,先定義一個借口PropertyChangeListener{public void execute();}
class Obj{
List<PropertyChangeListener> listeners;
void firePropertyChanged(PropertyChangeEvent e){
for (PropertyChangeListener l:listeners){
l.execute(e);
}
}
void addPropertyChangeListener(PropertyChangeListener l){
listeners.add(l);
}
}
ref就是傳引用,隨便一個對象就可以傳引用,除了String,還有out,你直接在函數裡面修改傳引用的參數就ok
❷ Java裡面有計算誤差函數erf()的方法么在哪個類
C# 里沒有erf 函數 ,你是不是想說ref 的用法
ref 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞回調用方法時,在方法中對參數所做的任何更改都將反映在該變數中。簡單點說就是,使用了ref和out的效果就幾乎和C中使用了指針變數一樣。它能夠讓你直接對原數進行操作,而不是對那個原數的Copy進行操作。
❸ java中可以用ref嗎
java 與SQL可以用ref介面來操作 REF 值是一個指向 SQL 結構類型的邏輯指針,所以在默認情況下 Ref 對象也是一個邏輯指針。因此,以 Ref 對象的形式檢索 SQL REF 值不會在客戶端上實現結構類型的屬性。
不知道你用ref來做什麼,JAVA垃圾回收中也和它有關系,你可以去詳細了解下
❹ 在JAVA中有沒有類似於c#中的ref關鍵詞,實現引用傳參
c#與java的區別:
1.屬性:
java中定義和訪問均要用get和set方法,可以不成對出現。
c#中是真正的屬性,定義時get和set必須同時出現,房問時用.號即可。不用get,set
2.對象索引
就是對象數組
public Story this [int index] {
3.C#中,不用任何范圍修飾符時,默認的是protect,因而不能在類外被訪問.
4.因為JAVA規定,在一個文件中只能有一個public類,而且這個類的名稱必須與文件名一模一樣,這是一個區別
5.在C#中,它是以Main方法來定位入口的.如果一個程序中沒有一個名為Main的方法,就會出"找不到入口的錯誤".不要把Main寫成main喲
6.C#預定義的簡單數據類型比Java多。例如,C#有unit,即無符號整數
7.忘掉Java中的static final修飾符。在C#中,常量可以用const關鍵詞聲明
C#的設計者還增加了readonly關鍵詞,readonly域只能通過初始化器或類的構造函數設置
8.公用類的入口點:c#是可以對Main進行重載(java中是main),允許有int返回值和空參數的Main
9.在Java中,switch語句只能處理整數。但C#中的switch語句不同,它還能夠處理字元變數。請考慮下面用switch語句處理字元串變數的C#代碼
10.C#沒有>>>移位操作符
11.goto關鍵詞:
Java不用goto關鍵詞。在C#中,goto允許你轉到指定的標簽。不過,C#以特別謹慎的態度對待goto,比如它不允許goto轉入到語句塊的內部。在Java中,你可以用帶標簽的語句加上break或continue取代C#中的goto。
12.int[] x = ;
int x[] = ;
但在C#中,只有第一行代碼合法,[]不能放到變數名字之後。
13.與Java不同的是,C#允許為名稱空間或者名稱空間中的類指定別名:
using TheConsole = System.Console;
14.在Java中,包的名字同時也是實際存在的實體,它決定了放置.java文件的目錄結構。在C#中,物理的包和邏輯的名稱之間是完全分離的
.NET中包的實體稱為程序集(Assembly)。每一個程序集包含一個manifest結構。manifest列舉程序集所包含的文件,控制哪些類型和資源被顯露到程序集之外,並把對這些類型和資源的引用映射到包含這些類型與資源的文件。程序集是自包含的,一個程序集可以放置到單一的文件之內,也可以分割成多個文件。.NET的這種封裝機制解決了DLL文件所面臨的問題,即臭名昭著的DLL Hell問題。
15.在Java中,java.lang包是默認的包,C#中不存在默認的包
16.C#中的訪問修飾符與Java中的基本對應,但多出了一個internal。簡而言之,C#有5種類型的可訪問性,如下所示:
public:成員可以從任何代碼訪問。
protected:成員只能從派生類訪問。
internal:成員只能從同一程序集的內部訪問。
protected internal:成員只能從同一程序集內的派生類訪問。
private:成員只能在當前類的內部訪問。
17.由於C#中不存在final關鍵詞,如果想要某個類不再被派生,你可以使用sealed關鍵詞
18.與Java不同,C#中的介面不能包含域(Field)。
另外還要注意,在C#中,介面內的所有方法默認都是公用方法。在Java中,方法聲明可以帶有public修飾符(即使這並非必要),但在C#中,顯式為介面的方法指定public修飾符是非法的。例如,下面的C#介面將產生一個編譯錯誤。
19.C#中的is操作符與Java中的instanceof操作符一樣,兩者都可以用來測試某個對象的實例是否屬於特定的類型。在Java中沒有與C#中的as操作符等價的操作符。as操作符與is操作符非常相似,但它更富有「進取心」:如果類型正確的話,as操作符會嘗試把被測試的對象引用轉換成目標類型;否則,它把變數引用設置成null。
20.C#仍舊保留了C++的內存手工管理方法,它適合在速度極端重要的場合使用,而在Java中這是不允許的
21.在C#中,所有的異常都從一個名為Exception的類派生
22.枚舉器即enum類型(java無),把它作為一個變數值的類型使用,從而把變數可能的取值范圍限制為枚舉器中出現的值。
23.結構(Struct)與類很相似,而結構是一種值類型,它存儲在棧中或者是嵌入式的,結構可以實現介面,可以象類一樣擁有成員,但結構不支持繼承
24.屬性聲明語法的第一部分與域聲明很相似,第二部分包括一個set過程和/或一個get過程
25.傳值方式:
在java中簡單數據類型的值傳參時,都以傳值方式;
在c#中如果加ref則會以引用的方式傳值(方法內部改變該參數,則外部變數一起跟著變);
加out與ref基本相同,但out不要求參數一定要初始化.
26.c#保留了指針。unsafe
27.代理:代理(delegate)可以看作C++或者其他語言中的函數指針
代理用來封裝可調用方法。你可以在類裡面編寫方法並在該方法上創建代理,此後這個代理就可以被傳遞到第二個方法。這樣,第二個方法就可以調用第一個方法。
代理是從公共基類System.Delegate派生的引用類型。定義和使用代理包括三個步驟:聲明,創建實例,調用。代理用delegate聲明語法聲明。
❺ java操作dll時,怎麼取ref回調函數返回的值
Variant outData = new Variant("value", true); //這樣應該就是ref string了
Variant var = Dispatch.call(dotnetCom,"BUSINESS_HANDLE","00","QXWEB",outData);
System.out.println("返回的值:"+outData.getStringRef());
❻ java ref 關鍵字
把Double d,定義在一個自己的對象中,再傳自己的對象作函數參數
❼ 在Java 中頂用什麼方法來代替C#中ref或out傳遞參數
對CLR來說out和ref沒有區別,有區別的,只是C#編譯器為了區分輸入輸出的引用而已。 也就是說,out和ref在Java中使用java的引用語法就好了。java沒有區分out和ref功能,因為對java來說根本就是一回事。
❽ 求助java調用dll中ref參數傳值的問題
值傳遞傳遞的是內存中的值,引用傳遞傳遞的是內存中的地址。
舉個例子:
String str = new String("test");
解釋:此例子中str值傳遞傳的是test,引用傳遞傳的是str在內存中的地址。
❾ java裡面src和ref這兩個屬性分別是什麼意思
<img> 標簽的 src 屬性的值是:圖像文件的 URL,也就是引用該圖像的文件的的絕對路徑或相對路徑。
<link> 標簽的 rel 屬性規定:當前文檔與被鏈接文檔之間的關系。
舉例說明:
html文件:
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>練習使用HTML</title>
<!--
rel="stylesheet"表示調用的是一種樣式。
href="css/index.css"表示外部樣式文件的路徑
-->
<linkrel="stylesheet"href="css/index.css"/>
</head>
<body>
<h1>我的第一個標題</h1>
<p>內容</p>
<!--圖像文件的URL-->
<imgsrc="img/book.png"/>
</body>
</html>
css文件:
h1{
color:red;
background-color:greenyellow;
}
效果展示:
❿ webservice中定義的ref參數 用java怎麼調用
public int removeGroupUsers(String guid, String usersId) {
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(UrlUtils.mucWebServiceUrl());
call.setTimeout(Integer.parseInt(IniReader.getValue("PUBLIC", "CONNECTION_TIME_OUT")));
call.setOperationName(new QName(soapaction, "removeGroupUsers")); // 設置要調用哪個方法
// 設置要傳遞的參數
call.addParameter(new QName(soapaction, "id"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName(soapaction, "userIds"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
// call.setReturnType(new QName(soapaction,"SearchPlanFlightJson"),
// String.class); // 要返回的數據類型(自定義類型)
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);// (標準的類型)
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapaction + "removeGroupUsers");
int result = (Integer) call.invoke(new Object[] { guid, usersId });// 調用方法並傳遞參數
// log.info("刪除群組成員[" + usersId + "],執行狀態 [" + result + "]");
return result;
}
catch (Exception e) {
if (Constants.EXCEPTION_CHANGED_RUN) {
Constants.EXCEPTION_CHANGED_RUN = false;
} else {
Constants.EXCEPTION_CHANGED_RUN = true;
}
Constants.LOG_PUB.info("WebServiceImpPub removeGroupUsers RemoteException . ", e);
}
return -100;
}