今天遇到个好玩的
当两个布尔类型遇到一起时
public class Main {
public static void main(String[] args) {
boolean a = false,b = false;
if(a =! b) {
System.out.println(a+" "+b);
}
System.out.print(a+" "+b);
}
}
编译器没有报错,但火眼金金的你,找到问题了吗?
先看输出:
true false
true false
怎么回事?
=!
=!和 != 这两个符号非常相像,但差了一万里。
=!是对后者进行非运算,然后赋值给前者。
我这个例子有意思的地方就在于,a赋值为!b,结果为true,然后还进入了if语句。
也就是说,if语句中先进行了对a =! b的运算,然后判断a的。
所以a =! b的if判断结果为 !b,然后计算过程还顺便对a赋值了。
作为代码行业人员,你的代码是要具有可读性的,所以最好你写的代码里不要出现:
if ( a =! b),这种句子
!=
这个符号的意思是判断两个是否相等,和==是两个相反的意思。
false != false 结果为 false
true != true 结果为 false
true != false 结果为 ture
接下来再补充几个关于布尔类型才能用的判断符号吧
&=
可以理解为且运算,运行效果类似于 &&
true &= true 结果为 true
true &= false 结果为 false
false &= true 结果为 false
false &= false 结果为 false
|=
可以理解为或运算,运行效果类似于 ||
true |= true 结果为 true
true |= false 结果为 true
false |= true 结果为 false
false |= false 结果为 false
^=
可以理解为异或运算
true ^= true 结果为 false
true ^= false 结果为 true
false ^= true 结果为 true
false ^= false 结果为 false