1. 程式人生 > >java引用資料型別之陣列

java引用資料型別之陣列

首先我們都知道在程式設計中賦值運算“=”的意思是把右邊的值賦給左邊。

1
如圖所示,當b=a時,實際上就是把a的值賦值給b。

但是在陣列中,可不是這麼回事

2
如圖所示,先定義一個數組變數a,裡面存著1,2,3.
再定義一個數組變數b,將b=a,然後遍歷迴圈將b中每一個元素,使每個數加一。這時b中的元素應該是{2,3,4}。最後再輸出陣列a。 至此,按照我們上面的規則來說,把a的值賦值給b,改變b的值對於a來說應該沒有任何影響,a的值應該還是{1,2,3}才對。
我們執行一下
3
a的值改變了!
- 在java中,資料型別分為兩類,即基本資料型別和引用資料型別
基本資料型別如 int,long,byte,操作時本身就是資料;


引用資料型別如陣列,類,介面。引用資料型別傳遞的是記憶體的使用權,是一塊記憶體空間,它可以由多個單位同時使用。
而賦值的過程並不是把a陣列內的資料傳遞給b,而是把a陣列的記憶體使用權與b共享。所以當a和b共享同一個陣列記憶體時,不管改變陣列a內的值還是改變陣列b內的值,該陣列都會改變。

在呼叫方法時,同理。

  • 一般來說呼叫方法並不會改變實參的值

4
雖然方法中使用的實參的是i,但是最後結果i的值沒有改變,還是5。

如果實參是陣列呢?看一下

5
陣列b和陣列c的值同時改變了,這就是引用資料型別。傳遞的永遠是記憶體的使用權,一塊記憶體空間,而不是本身的資料。