[英]equality between two arrays
我有這段代碼,我想知道為什么當 (a) 數組更改時,另一個將更改兩個是因為指針?
Boolean[] a= {false,false};
Boolean[] b = {false,false};
a = b;
a[0] = true;
b[1] = true;
System.out.println(a[0] +" "+ b[0]);
System.out.println(a[1] +" "+ b[1]);
輸出:
true true
true true
設置a = b
兩者都指向相同的數據。 因此,如果你改變一個,你就會改變另一個。 它們本質上是一回事。
沒有特定於數組。 這就是對象分配在 Java 中的工作方式。
您為變量a
分配與此處的變量b
相同的引用:
a = b;
所以a
和b
變量在這個語句之后引用同一個對象。
要使a
和b
引用兩個不同的對象,您必須復制它們的值。
對於 Boolean (immutable) 數組:進行淺拷貝的clone()
方法是一種方法。
a = b.clone();
簡短的回答,是的,因為指針
您首先創建兩個數組並給它們兩個指針 a 和 b,每個數組一個。 當您執行 a=b 時,您的 'a' 指針具有相同的 b 值,因此它們都指向第二個數組,因此 a 和 b 現在是同一回事。
這也意味着您不能再更改第一個數組,因為沒有指針指向它,並且應該釋放數組內存
它的原因是指針。 變量 a 和 b 指向相同的位置,因為
a = b;
在此代碼之后,a 指向與 b 相同的內存地址。 所有的變化和結果都是一樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.