Day_3_29:JAVA中方法引數的傳遞:實參和引用(地址)
阿新 • • 發佈:2022-03-29
JVM記憶體分為:棧(stack),堆(heap),方法區(method)。
一,棧:存放基礎資料型別,物件的引用(物件的地址)
二,堆:所有的物件(包括自己定義的物件和字串物件)
三,方法區:所有的class和static變數
eg:1.Person p1 = new Person();
2.Person p2 = new Person();
3.p1=p2;
第一句:new Person的意思是:把Person()儲存到堆記憶體中,假設地址為A; Person p1= 的意思是:在棧記憶體中設一個引用變數(指標變數)p1,p1的值為Person()在堆中的地址A,假設p1在棧中的地址為a。
第二句:new Person的意思是:把Person()儲存到堆記憶體中,假設地址為B; Person p2= 的意思是:在棧記憶體中設一個引用變數(指標變數)p2,p2的值為Person()在堆中的地址B,假設p2在棧中的地址為b。
第三句:把p2的值(也就是Person()在堆中的地址B)賦值給p1;此時p1,p2指向同一個堆中的Peson(),但是引用變數p1和p2在棧中的地址仍然沒變,分別是a,b;而此時另外一個在堆中地址為B的Person()沒有引用變數指向它。