java - swap函數(shù)
問題描述
在下面代碼中,并沒有達(dá)到交換兩個對象的效果輸出結(jié)果是3:4按理來說,java中不都是引用嗎,應(yīng)該可以直接交換對象啊!請解釋一下我的錯誤,并給出解決辦法。我希望輸出結(jié)果為4:3class Int{
public int x;
}
public class Hello {
void swap(Int a,Int b){ Int t=a; a=b; b=t;}public static void main(String[] args) {Hello hello=new Hello(); Int a=new Int(); Int b=new Int(); a.x=3; b.x=4; hello.swap(a,b); System.out.println(a.x+':'+b.x);}
}
問題解答
回答1:在Java世界中函數(shù)或者叫方法的入?yún)⒍际峭ㄟ^值拷貝的方式進(jìn)行傳遞:
原始類型(char,int,double等)都是通過直接拷貝變量值傳參;對象類型都是通過引用拷貝(跟C++中引用不同)傳參,通過該引用能夠更改其指向的對象內(nèi)部值,但是更改該引用值,僅對函數(shù)內(nèi)部可見,函數(shù)外部的實(shí)參依然沒有改變;
正常來說,java不能實(shí)現(xiàn)。并且int對象內(nèi)部private final int value;是final的
相關(guān)文章:
1. objective-c - ios百度地圖定位問題2. javascript - 求助這種功能有什么好點(diǎn)的插件?3. 微信開放平臺 - Android調(diào)用微信分享不顯示4. javascript - 關(guān)于這組數(shù)據(jù)如何實(shí)現(xiàn) 按字母列表分類展示 不改動數(shù)據(jù)結(jié)構(gòu)5. html5 - rudy編譯sass的時候有中文報(bào)錯6. javascript - 寫移動端的頁面的時候,有不一快空白,是怎么回事?7. javascript - 關(guān)于定時器 與 防止連續(xù)點(diǎn)擊 問題8. javascript - ie11以下單擊打開不了file,雙擊可以。求解?9. javascript - 在IE中(9+)平時的樣式不生效,只有用開發(fā)者工具選中這個元素才生效,是什么原因?10. Python做掃描,發(fā)包速度實(shí)在是太慢了,有優(yōu)化的方案嗎?
