Java中利用循环向list中add添加元素得到的都是最后一个

 

背景:通过增强for循环,list.add()赋值,发现得到的元素都是最后一个

 

 

原因:list在add添加元素时访问的是该对象的引用地址,list中存储的全是实例化后的对象的地址,而java中对象存储的也是地址,当同一个对象的值发生改变时,该地址的值会发生改变,这就导致了list中添加的元素都是同一个地址,当改地址存储的值发生改变,list中所有元素值都会改变,都为最后一次改变的值。

解决办法:在循环内new对象

 

 

posted @ 2022-10-28 11:44  企业级理解  阅读(748)  评论(0编辑  收藏  举报