我认为输出应该是(true true)。对不起我的英文
public class A{
public static void main(String[] args) {
Integer i1 = 128;
Integer i2 = 128;
System.out.println(i1 == i2);
Integer i3 = 127;
Integer i4 = 127;
System.out.println(i3 == i4);
}
}
答案 0 :(得分:2)
对于一系列值(至少-128-127),存在Integer
个实例的缓存,在隐式转换int
到Integer
时使用。
在这种情况下,128不在缓存中,因此表示该值的每个Integer
对象都是新的且不同。
另一方面,值 保证在缓存中,因此重复获取Integer
的相同实例。
答案 1 :(得分:0)
与原始int相反,整数是一个对象。您的比较是比较两个Integer类型的对象。我有点惊讶你得到“虚假的真实”。如果你改为尝试:
System.out.println(i1.intValue() == i2.intValue());
System.out.println(i3.intValue() == i4.intValue());
你应该得到预期的结果。