直接上代码
public static boolean returnTrue() {
System.out.println("true execute");
return true;
}
public static boolean returnFalse() {
System.out.println("false execute");
return false;
}
public static void main(String[] args) {
boolean flag = true;
flag &= returnTrue();
System.out.println("true\t&=\ttrue\t==>\t" + flag);
flag = true;
flag &= returnFalse();
System.out.println("true\t&=\tfalse\t==>\t" + flag);
flag = false;
flag &= returnTrue();
System.out.println("false\t&=\ttrue\t==>\t" + flag);
flag = false;
flag &= returnFalse();
System.out.println("false\t&=\tfalse\t==>\t" + flag + "\n");
flag = true;
flag |= returnTrue();
System.out.println("true\t|=\ttrue\t==>\t" + flag);
flag = true;
flag |= returnFalse();;
System.out.println("true\t|=\tfalse\t==>\t" + flag);
flag = false;
flag |= returnTrue();
System.out.println("false\t|=\ttrue\t==>\t" + flag);
flag = false;
flag |= returnFalse();;
System.out.println("false\t|=\tfalse\t==>\t" + flag + "\n");
System.out.println("^= 相同为真,不同为假");
flag = true;
flag ^= returnTrue();
System.out.println("true\t^=\ttrue\t==>\t" + flag);
flag = true;
flag ^= returnFalse();;
System.out.println("true\t^=\tfalse\t==>\t" + flag);
flag = false;
flag ^= returnTrue();
System.out.println("false\t^=\ttrue\t==>\t" + flag);
flag = false;
flag ^= returnFalse();;
System.out.println("false\t^=\tfalse\t==>\t" + flag);
}
true execute
true &= true ==> true
false execute
true &= false ==> false
true execute
false &= true ==> false
false execute
false &= false ==> false
true execute
true |= true ==> true
false execute
true |= false ==> true
true execute
false |= true ==> true
false execute
false |= false ==> false
^= 相同为真,不同为假
true execute
true ^= true ==> false
false execute
true ^= false ==> true
true execute
false ^= true ==> true
false execute
false ^= false ==> false
好久没见过这种写法了,除了位运算,就是判断真假,但是在判断真假的时候没有短路。所以写法很垃圾!!!!!妈的,开始没看明白,愣了一下,后来才发现,狗屁代码。