1. 程式人生 > >Java指傳遞引用傳遞

Java指傳遞引用傳遞

  java 變數有基本型別和引用型別,基本型別就是int,double等型別,引用型別如Integer,Double等型別。

  建立一個基本型別int a = 1,他會先在棧中建立一個變數a,然後去棧中查詢是否有1這個值,沒有就在棧中新增1這個值,然後a儲存資料1的儲存地址;現在再建立int b = 1,先在棧中建立變數b,在棧中找到了1這個值,b就儲存1的地址,現在改變b的值,設定b=2,會在棧中查詢是否有2這個值,沒有就在棧中新增2這個值,然後b的儲存改為2的儲存地址,a的值不變。

  當建立一個引用型別的時候,變數被儲存在了棧中,實際資料儲存在堆中。

  Integer num1 = new Integer(1);

  num1儲存在棧中,資料儲存在堆中,棧中儲存了資料在堆記憶體中的地址,當我們吧num1作為引數傳遞給一個函式並對他進行修改的時候,實際資料也修改了,應為函式接收的引數實際上是變數的儲存地址,修改了實際資料的內容,而num1任然指向這個地址,所有num1的值就被修改了。