1. 程式人生 > 其它 >Day_3_29:JAVA中方法引數的傳遞:實參和引用(地址)

Day_3_29:JAVA中方法引數的傳遞:實參和引用(地址)

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()沒有引用變數指向它。