用位操作来对boolean进行运算,结果居然是对的。。。在代码review发现的操作符错误,居然神奇的正常运行了
下面进行了测试。。包括int型的位比较都是正确的:
public static void main(String[] args) {
final boolean s1 = true;
final boolean s2 = false;
System.out.println("s1 & s2 ==" + (s1 & s2));
System.out.println("s1 | s2 ==" + (s1 | s2));
System.out.println("s2 & s1 ==" + (s2 & s1));
}
s1 & s2 ==false
s1 | s2 ==true
s2 & s1 ==false
突发奇想, 把int型也测试一把:
public static void main(String[] args) {
// final boolean s1 = true;
// final boolean s2 = false;
//
// System.out.println("s1 & s2 ==" + (s1 & s2));
// System.out.println("s1 | s2 ==" + (s1 | s2));
// System.out.println("s2 & s1 ==" + (s2 & s1));
final int i = 0;
final int j = 1;
System.out.println(i&j); //0
System.out.println(i|j); //1
final int k = 2; //加个2进来,结果就好玩了
System.out.println(j&k); //0
System.out.println(i&k); //0
System.out.println(i|k); //2
}