Integer.valueOf()在java中返回什么?

时间:2015-02-19 03:39:43

标签: java

为什么

Integer.valueOf(1000) == Integer.valueOf(1000)

返回false,而

Integer.valueOf(6) == Integer.valueOf(6)

返回true

2 个答案:

答案 0 :(得分:3)

来自documentation

  

此方法将始终缓存-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实例。