【发布时间】:2016-01-30 09:56:17
【问题描述】:
我注意到下面的代码返回false
Integer a = 600;
Integer b = 600;
System.err.println(a == b);
但是这个
int a = 600;
int b = 600;
System.err.println(a == b);
返回true
谁能解释一下?
【问题讨论】:
标签: java
我注意到下面的代码返回false
Integer a = 600;
Integer b = 600;
System.err.println(a == b);
但是这个
int a = 600;
int b = 600;
System.err.println(a == b);
返回true
谁能解释一下?
【问题讨论】:
标签: java
要知道的最重要的事情是直到128 的值被缓存,并且JVM 为您提供相同的对象,因为引用比较有效。在128 之上,它创建了一个新实例。
欲了解更多信息,请访问javadoc of Integer.valueOf(int)(这是幕后发生的事情)
【讨论】:
Integer a = 20; Integer b = 20; System.err.println(a == b); 输出:true 为什么?