-2

可以说我有类似的东西

 int a = 100;
 int b = 100;
 Integer c = (Integer) a;
 Integer d = (Integer) b;

c == d结果为真。这是否意味着对象 c 和 d 指向内存中的同一个对象?

任何人都可以在这里阐明吗?

我们在这里创建 2 个对象 c 和 d 吗?它们是不同的对象还是相同的对象?==告诉我它们是相同的对象。

我还在某处读到铸造不会创建新对象。这只是表示同一对象的一种方式。如果我尝试将对象转换为整数,这是有道理的。

但是在这种情况下,之前图片中没有对象(我们所拥有的只是图元)并且我们正在尝试在此处创建对象c,该d怎么办?

4

1 回答 1

0

自动装箱无需强制转换即可工作。您看到引用相等的原因是因为自动装箱内部调用Integer.valueOf()缓存某些值:

此方法将始终缓存 -128 到 127(含)范围内的值,并且可能缓存此范围之外的其他值。

于 2016-05-03T23:47:29.527 回答