本帖最后由 Anders_Zhuo 于 2014-04-26 20:49:38 编辑

解决方案 »

  1.   


    ArrayList<Stu> list = new ArrayList<TestArrayList.Stu>();
    list.add(new Stu("A"));
    for (Stu stu : list) {
    stu.name = "B";
    }
    为什么这样就输出B求大神指教
      

  2.   

    for (Stu stu : list) {
                stu  = new Stu("B");
            }
     
    并不是改变原来的值你需要 for (Stu stu : list) {
                stu  = new Stu("B");
                list.set(0, stu);
            }
     
      

  3.   

    难道list遍历的时候,拿到的不是引用吗?
      

  4.   


    难道list遍历的时候,拿到的不是引用吗?
      

  5.   

     stu  = new Stu("B"); 相当于临时new 了一个没有替换以前的。
      

  6.   

    你的意思是   stu  = new Stu("B");   遍历的时候stu是for循环里的临时变量?
    但是改成
    for (Stu stu : list) {
    stu.name = "b";
    }
    这样就可以啊
      

  7.   

    感觉应该是foreach的时候那个stu是个类似临时指针的东西,是个引用,每次循环它就指向List中存的一个Stu。
    for (Stu stu : list) {
    stu = new Stu("B");
    }
    这样相当于把stu指向一个新的Stu,而List中的stu并没有真正改变。
    for (Stu stu : list) {
                stu.name = "b";
    }
    这样就不一样了