Java中利用循环向list中add添加元素得到的都是最后一个
背景:通过增强for循环,list.add()赋值,发现得到的元素都是最后一个
原因:list在add添加元素时访问的是该对象的引用地址,list中存储的全是实例化后的对象的地址,而java中对象存储的也是地址,当同一个对象的值发生改变时,该地址的值会发生改变,这就导致了list中添加的元素都是同一个地址,当改地址存储的值发生改变,list中所有元素值都会改变,都为最后一次改变的值。
解决办法:在循环内new对象
背景:通过增强for循环,list.add()赋值,发现得到的元素都是最后一个
原因:list在add添加元素时访问的是该对象的引用地址,list中存储的全是实例化后的对象的地址,而java中对象存储的也是地址,当同一个对象的值发生改变时,该地址的值会发生改变,这就导致了list中添加的元素都是同一个地址,当改地址存储的值发生改变,list中所有元素值都会改变,都为最后一次改变的值。
解决办法:在循环内new对象