鉴于:
public class Spock {
public static void main(String[] args) {
Long tail = 2000L;
Long distance = 1999L;
Long story = 1000L;
if ((tail > distance) ^ ((story * 2) == tail)) {
System.out.print("1");
}
if ((distance + 1 != tail) ^ ((story * 2) == distance)) {
System.out.print("2");
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这个示例代码不输出任何内容?
Ily*_*lya 11
在第一,如果你true ^ true = false
排在第二,如果你得到false ^ false = false
becouse ^-被OR exclusiveopeartor,这是手段
true ^ true = false
true ^ false = true
false ^ true = true
false ^ false = false
Run Code Online (Sandbox Code Playgroud)
你正在使用布尔异或,这与它非常相似!=.在第一种情况下,两个条件都是真的,而在第二种情况下,两个条件都是假的,因此不采用分支.(您可以在IDE中使用调试器进行检查)
唯一的区别是,!=优先级高于&其高于^