为什么
Integer.valueOf(1000) == Integer.valueOf(1000)
返回false
,而
Integer.valueOf(6) == Integer.valueOf(6)
返回true
?
答案 0 :(得分:3)
此方法将始终缓存-128到127(包括端点)范围内的值,并可以缓存此范围之外的其他值。
因此,Integer.valueOf(6)
只有一个实例对象,Integer.valueOf(1000)
创建新的Integer
。
因此Integer.valueOf(6) == Integer.valueOf(6)
和Integer.valueOf(1000) != Integer.valueOf(1000)
答案 1 :(得分:1)
因为一些较低价值的Integer对象被缓存并重用。因此,所有较低值的Integer对象(如6)都引用相同的Integer实例。