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

看板java作者 (@.@)時間10年前 (2015/05/12 01:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《tas72732002 (蔥頭)》之銘言: : 請問各位, : 最近在實作上碰到一個問題, 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嗎? : 謝謝 在Compiler裡是這樣編譯的 Integer a = new Integer(900); Integer b = a; a = Integer.valueOf(1000); ------------------------------------------------ a=1000 實際上是使用Integer的static method valueOf並賦予引數1000 再來看看valueOf的程式碼 public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); //重點是這行 } 簡單來說a已經指去新的物件了,但b仍指向a原來的物件 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.161.46.158 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1431363608.A.3E4.html
文章代碼(AID): #1LKE0OFa (java)
文章代碼(AID): #1LKE0OFa (java)