數組列表& 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。
以上是第二種情況。盡管每次添加()都是不同的對象,但結果仍然會被覆蓋。為什麽?
* * * *靜態* * *(在學生類中)是此修飾符。
將修改後的屬性設為靜態,
這意味著這個* * *類的所有對象共享同壹個屬性。
因此,盡管集合中有不同的對象,但對象的屬性仍然是相同的值。
修改其中任何壹個,其他的也會被“修改”