【发布时间】:2015-02-19 03:39:42
【问题描述】:
为什么
Integer.valueOf(1000) == Integer.valueOf(1000)
返回false,而
Integer.valueOf(6) == Integer.valueOf(6)
返回true?
【问题讨论】:
标签: java
为什么
Integer.valueOf(1000) == Integer.valueOf(1000)
返回false,而
Integer.valueOf(6) == Integer.valueOf(6)
返回true?
【问题讨论】:
标签: java
此方法将始终缓存 -128 到 127(含)范围内的值,并可能缓存此范围之外的其他值。
因此,Integer.valueOf(6) 只有一个实例对象,而Integer.valueOf(1000) 创建一个新的Integer。
因此Integer.valueOf(6) == Integer.valueOf(6) 和Integer.valueOf(1000) != Integer.valueOf(1000)
【讨论】:
因为一些较低值的 Integer 对象被缓存和重用。所以所有较低值的 Integer 对象,比如 6,都指向同一个 Integer 实例。
【讨论】: