ArrayList<Stu> list = new ArrayList<TestArrayList.Stu>(); list.add(new Stu("A")); for (Stu stu : list) { stu.name = "B"; } 为什么这样就输出B求大神指教
for (Stu stu : list) { stu = new Stu("B"); }
并不是改变原来的值你需要 for (Stu stu : list) { stu = new Stu("B"); list.set(0, stu); }
难道list遍历的时候,拿到的不是引用吗?
难道list遍历的时候,拿到的不是引用吗?
stu = new Stu("B"); 相当于临时new 了一个没有替换以前的。
你的意思是 stu = new Stu("B"); 遍历的时候stu是for循环里的临时变量? 但是改成 for (Stu stu : list) { stu.name = "b"; } 这样就可以啊
感觉应该是foreach的时候那个stu是个类似临时指针的东西,是个引用,每次循环它就指向List中存的一个Stu。 for (Stu stu : list) { stu = new Stu("B"); } 这样相当于把stu指向一个新的Stu,而List中的stu并没有真正改变。 for (Stu stu : list) { stu.name = "b"; } 这样就不一样了
ArrayList<Stu> list = new ArrayList<TestArrayList.Stu>();
list.add(new Stu("A"));
for (Stu stu : list) {
stu.name = "B";
}
为什么这样就输出B求大神指教
stu = new Stu("B");
}
并不是改变原来的值你需要 for (Stu stu : list) {
stu = new Stu("B");
list.set(0, stu);
}
难道list遍历的时候,拿到的不是引用吗?
但是改成
for (Stu stu : list) {
stu.name = "b";
}
这样就可以啊
for (Stu stu : list) {
stu = new Stu("B");
}
这样相当于把stu指向一个新的Stu,而List中的stu并没有真正改变。
for (Stu stu : list) {
stu.name = "b";
}
这样就不一样了