[問題] 關於物件參考記憶體位置問題

看板java作者 (蔥頭)時間9年前 (2015/05/11 23:45), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/2 (看更多)
請問各位, 最近在實作上碰到一個問題, code如下 Integer a = new Integer(900); Integer b = a; a = 1000; System.out.println(b); 想請問 b不是參照a的記憶體位址嗎, 為什麼當a=1000時, b還是900呢 ? Integer b = a; 不是代表 a傳記憶體位置給b嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.181.227 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1431359118.A.A04.html

05/11 23:58, , 1F
autoboxing;你的a已經是另一個東西了
05/11 23:58, 1F

05/12 00:25, , 2F
= new Integer(1000); 障眼法嚇不倒我的
05/12 00:25, 2F

05/12 00:59, , 3F
因為你讓a去refer 1000,這件事和b已經沒關係了
05/12 00:59, 3F

05/12 02:53, , 4F
換成任何物件,a = new Obj(); b = a; a = c; 結果a都不會
05/12 02:53, 4F

05/12 02:55, , 5F
跟b是reference同樣東西啊
05/12 02:55, 5F

05/12 02:59, , 6F
reference type的 = 都是改reference,b是參照a的位址,那
05/12 02:59, 6F

05/12 02:59, , 7F
你不覺得a也是參照1000的位址,語意才是統一的嗎?
05/12 02:59, 7F

05/12 22:18, , 8F
這題就算是primitive type也是一樣的結果
05/12 22:18, 8F
文章代碼(AID): #1LKCwEe4 (java)
文章代碼(AID): #1LKCwEe4 (java)