java - swap函數(shù)
問題描述
在下面代碼中,并沒有達(dá)到交換兩個(gè)對(duì)象的效果輸出結(jié)果是3:4按理來說,java中不都是引用嗎,應(yīng)該可以直接交換對(duì)象啊!請(qǐng)解釋一下我的錯(cuò)誤,并給出解決辦法。我希望輸出結(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等)都是通過直接拷貝變量值傳參;對(duì)象類型都是通過引用拷貝(跟C++中引用不同)傳參,通過該引用能夠更改其指向的對(duì)象內(nèi)部值,但是更改該引用值,僅對(duì)函數(shù)內(nèi)部可見,函數(shù)外部的實(shí)參依然沒有改變;
正常來說,java不能實(shí)現(xiàn)。并且int對(duì)象內(nèi)部private final int value;是final的
相關(guān)文章:
1. boot2docker無法啟動(dòng)2. docker-compose中volumes的問題3. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””4. java - SSH框架中寫分頁時(shí)service層中不能注入分頁類5. nignx - docker內(nèi)nginx 80端口被占用6. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.7. javascript - mock.js可以存儲(chǔ)數(shù)據(jù)嗎8. docker api 開發(fā)的端口怎么獲取?9. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?10. golang - 用IDE看docker源碼時(shí)的小問題

網(wǎng)公網(wǎng)安備