當前位置:成語大全網 - 書法字典 - 字典中的值將被覆蓋。

字典中的值將被覆蓋。

ArrayList集合包含相同的值,該值可能是相同的引用或相同的值。

數組列表& lt對象& gtlist = new ArrayList & lt對象& gt();

Object obj

for(int I = 10;我& gt0;我- ) {

obj = new Object();

//obj = another obj;

list . add(obj);

}

如上所述,每次都添加相同的引用,引用obj指向不同的對象。

結果是集合中的所有值都是obj,而obj指向的地方就是集合中的值。

讓Objec new參與進來。

for(int I = 10;我& gt0;我- ) {

?Object obj = new Object();

?objt . set(I);

list . add(obj);

公共課學生{

私有靜態字符串id;

私有靜態字符串名稱;

公共學生(字符串id,字符串名稱){

this.id = id

this.name = name

}

}

數組列表& lt學生& gtlist = new ArrayList & lt學生& gt();

Student s1 =新學生(“1”、“張三”);

學生s2 =新學生(“2”、“李四”);

//

list . add(s 1);

list . add(S2);

//如果輸出兩個對象,會發現都是李四。

//或者像這樣

數組列表& lt學生& gt名單?=新數組列表& lt學生& gt();

for(int I = 10;我& gt0;我- ) {

list.add(新學生(I,“姓名“));

}

//如果輸出所有對象,則它們的id為1。

以上是第二種情況。盡管每次添加()都是不同的對象,但結果仍然會被覆蓋。為什麽?

* * * *靜態* * *(在學生類中)是此修飾符。

將修改後的屬性設為靜態,

這意味著這個* * *類的所有對象共享同壹個屬性。

因此,盡管集合中有不同的對象,但對象的屬性仍然是相同的值。

修改其中任何壹個,其他的也會被“修改”