我刚看到类似的代码:
public class Scratch
{
public static void main(String[] args)
{
Integer a = 1000, b = 1000;
System.out.println(a == b);
Integer c = 100, d = 100;
System.out.println(c == d);
}
}
运行时,这段代码将打印出:
false
true
我理解为什么第一个是 false
: 因为这两个对象是独立的对象,所以 ==
比较引用。但是我不明白,为什么第二个语句返回 true
?有没有一些奇怪的自动装箱规则,当一个整数的值在某个范围内时就会生效?这是怎么回事?