1. 程式人生 > >基本型別和引用型別作為引數傳遞(重要)

基本型別和引用型別作為引數傳遞(重要)

基本型別和引用型別作為引數傳遞

引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下程式碼進行說明,並配合圖解讓大家更加清晰

1.基本資料型別傳遞
在這裡插入圖片描述

基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了一份傳遞給呼叫的方法show(),當在show()方法中x接受到了複製的值,再在show()方法中對x變數進行操作,這時只會影響到show中的x。當show方法執行完成,彈棧後,程式又回到main方法執行,main方法中的x值還是原來的值。

2.引用資料型別傳遞
在這裡插入圖片描述

當引用變數作為引數傳遞時,這時其實是將引用變數空間中的記憶體地址(引用)複製了一份傳遞給了show方法的d引用變數。這時會有兩個引用同時指向堆中的同一個物件。

當執行show方法中的d.x=6時,會根據d所持有的引用找到堆中的物件,並將其x屬性的值改為6.show方法彈棧。

由於是兩個引用指向同一個物件,不管是哪一個引用改變了引用的所指向的物件的中的值,其他引用再次使用都是改變後的值。