对比表
与(仅左右语句都为真时为真)包括:逻辑与& 和 短路与&&
或(左右语句有一则或超过一则为真时为真)包括:逻辑或| 和 短路或||
非(取反,假时为真,真时为假)包括:逻辑非!
异或(左右相异时为真,左右相同时为假)包括:逻辑异或^
a b a&b a&&b a|b a||b !a a^b
true true true true true true false false
true false false false true true false true
false true false false true true true true
false false false false false false true false
与
逻辑与
class LogicAnd{
public static void main(String[] args){
//区分& and &&
//当符号左右都是boolean型变量时,&为逻辑与(无论何种情况,左右语句都执行)
boolean b1 = false;
int num1 = 10;
if(b1&(num1++ >0)){
System.out.println("逻辑与成立");
}else{
System.out.println("逻辑与不成立");
}
System.out.println("num1=" + num1);
// 此时输出结果为
// <<<逻辑与不成立
// <<<num1=11
}
}
短路与
class ShortAnd{
public static void main(String[] args){
//区分& and &&
//&&为短路与(左语句为真则执行右语句,左语句为假则不执行右语句(因为左为假,与运算已不成立,此时短路与不执行右侧语句))
boolean b2 = false;
int num2 = 10;
if(b2&&(num2++ >0)){
System.out.println("短路与成立");
}else{
System.out.println("短路与不成立");
}
System.out.println("num2=" + num2);
// 此时输出结果为
// <<<逻辑与不成立
// <<<num2=10
}
}
或
逻辑或
class LogicOr{
public static void main(String[] args){
//区分| and ||
//当符号左右都是boolean型变量时,|为逻辑或(无论何种情况,左右语句都执行)
boolean b1 = true;
int num1 = 10;
if(b1|(num1++ >0)){
System.out.println("逻辑或成立");
}else{
System.out.println("逻辑或不成立");
}
System.out.println("num1=" + num1);
// 此时输出结果为
// <<<逻辑或成立
// <<<num1=11
}
}
短路或
class ShortOr{
public static void main(String[] args){
// 区分| and |
// ||为短路或(左语句为假则执行右语句,左语句为真则不执行右语句(因为左为真,或运算已成立,此时短路与不执行右侧语句))
boolean b2 = true;
int num2 = 10;
if(b2&&(num2++ >0)){
System.out.println("短路或成立");
}else{
System.out.println("短路或不成立");
}
System.out.println("num2=" + num2);
// 此时输出结果为
// <<<逻辑或成立
// <<<num2=10
}
}
非
逻辑非
class LogicNot{
public static void main(String[] args){
// 逻辑非 !
boolean b = true;
if(!b){
System.out.println("非b为真");
}else{
System.out.println("非b为假");
}
// 此时输出结果为
// <<<非b为假
}
}
异或
逻辑异或
class LogicXor{
public static void main(String[] args){
// 逻辑异或 ^
boolean a = true;
booleam b = false;
if(a^b){
System.out.println("a^b为真");
}else{
System.out.println("a^b为假");
}
// 此时输出结果为
// <<<a^b为真
}
}