为什么这段代码会输出10个17?小弟我觉得每次list都添加进去了啊如何最后都被替换了
为什么这段代码会输出10个17?我觉得每次list都添加进去了啊?怎么最后都被替换了?[解决办法]第一种写法,只
为什么这段代码会输出10个17?我觉得每次list都添加进去了啊?怎么最后都被替换了?
[解决办法]第一种写法,只有一个First实例,list里存了10个这个实例的副本,当然是同一个值(为什么都是17呢?那是因为你最后一次更新的值是17,由于是同一个实例,所以每一次都把之前的给覆盖了)。
第二种些法,每一次循环都new一个First实例,list里存了10个不同的First实例,所以是不一样的结果。
[解决办法]改为
List<First> list = new ArrayList<First>();
while (i>0){
First f ;//方法哦while里面,每次才会创建不同的对象。
f = new First();
f.setK(j++);
f.setI("==");
list.add(f);
i--;
}
[解决办法]你如果会分析内存 就很容易理解了
你的first只初始化了一次 ,
以后每次改变值,都会把之前的first替换掉,因为他们指向的是同一块内存。。
懂了吗??