今天在網上發現了乙個問題,把我整迷糊了!研究了1陣子,發表一下,供人參考!
list> fatherlist=new linkedlist<>();
listchildlist=new arraylist<>();
childlist.add("111"); //步驟1
fatherlist.add(childlist);//步驟2
childlist.add("222");//步驟3 ----這裡的新增跟上面有什麼關係 為什麼會讓fatherlist集合中新增記錄
for (int i = 0; i < fatherlist.size(); i++)
}我在不知道答案的時候以為只輸出111 因為按照順序 fatherlist在childlist新增222之前就放在了 fatherlist裡
後來經過我凱哥的幫助 知道了答案
fatherlist是新增了orderlist的記憶體位址,當orderlist裡新增222的時候 fatherlist引用的orderlist的值也發生了改變!
我做了個比方:childlist是樓裡的一層,fatherlist是乙個大樓,當childlist新增到大樓裡,不管你在這一層加多少的宿舍都屬於這個大樓!
經過這個問題,我又聯想到了這個跟引用型別有關係嗎?
我問string 和date都是引用型別 為什麼不會出現這種問題?
別人告訴我它們是特殊的引用型別。。。。
每次給他們重新複製都會新建乙個記憶體位址存放不會改變原來的值
(2017-10-30)記錄
java基礎資料型別
基礎資料型別 byte 位元組 8bit 8 個二進位制位 0 2 8 256 128 127 short 短整型 16bit 02 16 65536 32768 32768 int 整型 32bit 02 32 2147483648 2147483648 long 長整型 64bit 02 64 ...
Java基礎 資料型別二
在計算機中所有的數字都是以二進位制存在的,原始碼是直接將乙個整數換算成二進位制數,然而計算機是以補碼的形式儲存所有的整數。補碼計算規則 1 整數的補碼和原始碼相同,負數的補碼是其反碼加1 2 反碼是對原始碼按位取反,只有高好位 符號位 例子 2147483645的補碼 原始碼 11111111111...
java基礎1 資料型別
資料大小 資料範圍 int4個位元組 4 8 32 2 31 2 31 short 2個位元組 2 8 16 2 15 2 15 long 8個位元組 8 8 64 2 63 2 63 byte 1個位元組 8位 2 7 2 7 資料大小 資料範圍 float 4個位元組 4 8 32 2 128 ...