java中list集合多個對象相同記錄的問題
時間 2020-12-28
標籤
java list
產生的原因
- java中所有的一切都是值傳遞,八大數據類型傳遞的是值,示例對象傳遞的是地址值(引用值)。這裏提到的引用跟c中提到的指針是有區別的:c中的指針的值是可改變的,而java中的引用地址值是不可改變的。
- 如果採用中間變量想list集合中添加記錄的話,在jvm的存儲空間中,引用地址值在棧內存,而實例對象在堆內存,這樣不斷的添加記錄,就會在堆內存中不斷的覆蓋掉原來的引用對象,而棧中引用地址不變,以致於棧內存中引用指向的永遠是堆內存中最新的記錄,這就形成了多個對象相同記錄的問題。
解決方法
- 每查出一條記錄都要生成一個新的引用地址去指向記錄實例對象,這樣就避免了這樣的問題