不知道有什么对这个感兴趣的~我测试的结果是
id=1,name=test1
id=2,name=test2
id=3,name=test3
id=4,name=test4
id=5,name=test5
============
id=1,name=test1
id=2,name=test2
id=10,name=modified
id=4,name=test4
id=5,name=test5

解决方案 »

  1.   

    我今天测试的时候发现JAVA的对对象操作的时候通过引用来操作的(勿喷~),就算是在list里面,也是存的引用(我也不是很清楚,也可能是list存的对象,给别人的都是引用),这样说来,如果J2EE里面用HIBERNATE等持久化的工具,并设置好对象之间的关系后,对系统效率会提升很多~
      

  2.   

    输出是对的。List里面存得是对象的。没什么问题。
      

  3.   

    找一本关于JVM的书,看看关于JVM内存的部分,,你会更清楚
      

  4.   

    new出来的一般都是引用,直接定义的都是传值。当然不可变类特殊处理。
      

  5.   

    嗯,这是我没事的时候想的,就是为什么要把对象交给hibernate管理,现在知道了其中的一点,就是Hibernate会把对象之间的关系通过引用关连起来,拿对象的时候比任何方式都高效,其它要么去map要么去list等……
      

  6.   

    我用过Integer测试过,好像不是传引用。JAVA会把Integer变成Int吧?
      

  7.   

    我用过Integer测试过,好像不是传引用。JAVA会把Integer变成Int吧?楼主知道String是不可变类吧,Integer和String相同,是不可变类,这样就想通了。
      

  8.   


    public class Test {
    public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    Integer test = null;
    for(int i = 0 ; i < 5; i ++){
    test = new Integer(i+1);
    list.add(test);
    }
    for(Integer n : list){
    System.out.println(n);
    }
    Integer test2 = list.get(2);
    test2 ++;
    System.out.println("============");
    for(Integer n : list){
    System.out.println(n);
    }
    }
    }1
    2
    3
    4
    5
    ============
    1
    2
    3
    4
    5
    这个是不是没有什么代表性?这个输出说明Integer对象和自己定义的对象在内存中的管理方式不一样,这个和int是差不多的……
      

  9.   

    我用过Integer测试过,好像不是传引用。JAVA会把Integer变成Int吧?楼主知道String是不可变类吧,Integer和String相同,是不可变类,这样就想通了。
    懂了~谢谢~
      

  10.   

     传Integer时,我更愿意理解为传引用,传引用进去后,因为Integer是不可变类,值是只读的,要参加运算,就要新new 对象出来,方法内的引用就指向了新new出来的内存地址,但这不影响传之前的Integer的引用。至于说Integer自己转int,我觉得这个说法有点牵强。还有种说法就是java都是传值的,我不太认可那种解释说法。自己理解通了就可以了。楼主可以参考下 http://bbs.csdn.net/topics/390660609