Java中的按位异或是什么?

Jav*_*yer 6 java scjp

鉴于:

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)


Pet*_*rey 9

你正在使用布尔异或,这与它非常相似!=.在第一种情况下,两个条件都是真的,而在第二种情况下,两个条件都是假的,因此不采用分支.(您可以在IDE中使用调试器进行检查)

唯一的区别是,!=优先级高于&其高于^