作者octantis (@.@)
看板java
标题Re: [问题] 关於物件参考记忆体位置问题
时间Tue May 12 01:00:03 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/java/M.1431363608.A.3E4.html