为什么== for Integer.valueOf(500)返回false但是为5?

时间:2014-10-28 19:48:02

标签: java oop integer

System.out.println(Integer.valueOf(5) == Integer.valueOf(5));
System.out.println(Integer.valueOf(500) == Integer.valueOf(500));

输出

true
false

为什么第一行返回true但第二行返回false?这是什么诀窍,因为他们都在valueOf()类上调用Integer

1 个答案:

答案 0 :(得分:4)

有低编号的Integer对象的缓存实例,但没有任何更高值的Integer对象。

如果您之前没有注意到,则表示您正在比较对象,而不是整数。