java中list集合多個對象相同記錄的問題

java中list集合多個對象相同記錄的問題

產生的原因

  1. java中所有的一切都是值傳遞,八大數據類型傳遞的是值,示例對象傳遞的是地址值(引用值)。這裏提到的引用跟c中提到的指針是有區別的:c中的指針的值是可改變的,而java中的引用地址值是不可改變的。
  2. 如果採用中間變量想list集合中添加記錄的話,在jvm的存儲空間中,引用地址值在棧內存,而實例對象在堆內存,這樣不斷的添加記錄,就會在堆內存中不斷的覆蓋掉原來的引用對象,而棧中引用地址不變,以致於棧內存中引用指向的永遠是堆內存中最新的記錄,這就形成了多個對象相同記錄的問題。
    在這裏插入圖片描述

解決方法

  1. 每查出一條記錄都要生成一個新的引用地址去指向記錄實例對象,這樣就避免了這樣的問題
    在這裏插入圖片描述