據我瞭解,如果我寫當我在java中創建對象時,jvm究竟發生了什麼?
Car a3=new Car()
該語句將創建一個與它在JVM堆中的所有屬性JVM堆命名a3
手柄。 如果這是正確的,我想知道價值如何調用。 所以,如果我創建一個方法checkMethod(Car c)
並說checkMethod(a3);
假設我們的車叫它是
public class Car{
int a=0;
public int getpar(){
return a;
}
}
在
checkMethod
我嘗試訪問using a3.a = 5;
,所以我改變了a3.a
值,它會顯示我的主叫類以及它指向jvm在堆中創建的相同字段。
但是,當我在調用方法中做a3= null;
並再次返回時,我打電話給 checkMethod(a3)
並試圖看到這個對象它不是null? 爲什麼它的表現與對象屬性相比是不同的?
想象A3(和所有變量)爲與對他們寫的地址的紙片。當你將一個變量傳遞給一個方法時,你將**地址**複製到一張新紙上(bacuse java是按值傳遞的)。當您將該方法內的變量設置爲空時,您可以在紙上寫出地址。但原來的遺蹟 –
謝謝!這是有道理的。 – piyush