按位异或在Java中做什么?
鉴于: 为什么此示例代码不输出任何内容?您使用的是布尔异或,这与按位异或在Java中做什么?,java,scjp,Java,Scjp,鉴于: 为什么此示例代码不输出任何内容?您使用的是布尔异或,这与基本相同=。在第一种情况下,这两个条件都是真的,而在第二种情况下,这两个条件都是假的,因此都不执行分支。(您可以使用IDE中的调试器进行检查) 唯一真正的区别是=的优先级高于&,如果您得到true^true=false 如果您得到false^false=false 因为^-是或独占的运营商,它的意思是 public class Spock { public static void main(String[] args) {
基本相同=代码>。在第一种情况下,这两个条件都是真的,而在第二种情况下,这两个条件都是假的,因此都不执行分支。(您可以使用IDE中的调试器进行检查)
唯一真正的区别是=
的优先级高于&
,如果您得到true^true=false
如果您得到false^false=false
因为^
-是或独占的
运营商,它的意思是
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");
}
}
}
从
对于^,如果操作数值不同,则结果值为true;否则,结果为false。
它不会打印任何内容,因为当XOR运算符与布尔参数(与整数相反)一起使用时,如果两个操作数中正好有一个为true
,则只会返回true
在第一个if
中,两个部分的计算结果都是true
和true^true==false
在第二个中,如果两个部分的计算结果都是false
和false^false==false
,那么您可以这样想。如果真代表正,假代表负,那么负乘以正等于正,负乘以负等于负,正乘以正等于负……这是完全相反的:)
true ^ true = false
true ^ false = true
false ^ true = true
false ^ false = false