在这段代码(story * 2) == tail
中True
并且false
对于distance + 1 != tail
.
==
检查参考,因为 Long 是不可变的,对于两个不同的对象,它将为假,
这里的值story * 2
在引用中变得相等tail
,但它们是两个不同的对象,而不是用于池的编译时间常数。
public class Test2
{
public static void main(String [] args) {
Long tail = 2000L;
Long distance = 1999L;
Long story = 1000L;
System.out.println(tail > distance);
System.out.println((story * 2) == tail);
if((tail > distance) ^ ((story * 2) == tail))
System.out.print("1");
System.out.println(distance + 1 != tail);
System.out.println((story * 2) == distance);
if((distance + 1 != tail) ^ ((story * 2) == distance))
System.out.print("2");
}
我检查了here,但对此没有任何解释。