浅谈List保存的数据是引用数据类型的地址
生活随笔
收集整理的這篇文章主要介紹了
浅谈List保存的数据是引用数据类型的地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
淺談List保存的數據是引用數據類型的地址
今天一個初學javaweb的朋友問我一個bug,經過和別人 討論分析了解到List對象細節上的一些問題,我將代碼重新簡化構造了一下做成了一個例子。上代碼:
?
得到的結果:
?
咋一看,無非就是第一個循環沒有循環創建test對象,第二個循環創建了test對象。
按照邏輯test在循環數據都進行了更新,然后再加入到list對象的,若不考慮list引用數據類型地址問題,第一個print和第二個print會都會輸出[0,1,2,3,4]。
事實上,這和list引用數據類型地址有關,由于list存放的是一個對象的地址,而不是這個對象的值,所以當對象更新之后,之前加入list對象的test的值會因為test的對象更新,但對象地址沒有發生變化,所以當list遍歷的時候,由于是存放的地址,我們會取到同一個test對象,而對象的值也更新成了最后一個循環所賦的值。
簡單的說:第一個:list里面存的是 【地址4,地址4,地址4,地址4】list并不是存的 【值1,值2,值3,值4.....】
? ? ? ? ? ? ? ? ? 第二個:list里面存的是 【地址1,地址2,地址3,地址4】而我們往往需要的是結果二,而不是結果一。
總結
以上是生活随笔為你收集整理的浅谈List保存的数据是引用数据类型的地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Python的开源人脸识别库:离线识
- 下一篇: 英伟达宣布全面支持ARM高性能计算,三周