Re: [問題] 關於物件參考記憶體位置問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章