引用類型數據和基本類型數據作為參數傳遞有沒有差別呢?我們用如下代碼進行說明,並配合圖解讓大家更加清晰
1.基本數據類型傳遞
基本類型作為參數傳遞時,其實就是將基本類型變量x空間中的值復制了一份傳遞給調用的方法show(),當在show()方法中x接受到了復制的值,再在show()方法中對x變量進行操作,這時只會影響到show中的x。當show方法執行完成,彈棧后,程序又回到main方法執行,main方法中的x值還是原來的值。
2.引用數據類型傳遞
當引用變量作為參數傳遞時,這時其實是將引用變量空間中的內存地址(引用)復制了一份傳遞給了show方法的d引用變量。這時會有兩個引用同時指向堆中的同一個對象。
當執行show方法中的d.x=6時,會根據d所持有的引用找到堆中的對象,並將其x屬性的值改為6.show方法彈棧。
由於是兩個引用指向同一個對象,不管是哪一個引用改變了引用的所指向的對象的中的值,其他引用再次使用都是改變后的值。