Java逻辑运算符——短路与和短路或
Java逻辑运算符中有两种特殊的存在:短路与(&&)、短路或(||)。
短路与(&&):boolean b = 条件1 && 条件2;
运算过程:当条件1的值为false时,执行短路运算(不再对条件2进行判断),直接返回b的值为false;当条件1的值为true时,再对条件2进行判断,若条件2的值为true,则返回b的值为true,若条件2的值为false,则返回b的值为false。
int m = 1,n = 2;
boolean a = m>2;//false
boolean b = m<n;//true
/*a为false,输出结果为false,执行短路或后不执行(m++>0),
输出m的值查看m++执行情况*/
System.out.println(a&&(m++>0));
System.out.println(m);
/*b值为true,执行短路或后继续执行(n++>0),(n++>0)为true,
输出结果为true
输出n的值,查看n++执行情况*/
System.out.println(b&&(n++>0));
System.out.println(n);
输出结果:
false
1
true
3
短路或(||):boolean b = 条件1 || 条件2;
运算过程:当条件1的值为true时,执行短路运算(不再对条件2进行判断),直接返回b的值为true;当条件1的值为false时,再对条件2进行判断,若条件2的值为true,则返回b的值为true,若条件2的值为false,则返回b的值为false。
int m = 1,n = 2;
boolean a = m>0;//true
boolean b = m>n;//false
/*a为true,输出结果为true,执行短路或后不执行(m++>0),
输出m的值查看m++执行情况*/
System.out.println(a||(m++>0));
System.out.println(m);
/*b值为false,执行短路或后继续执行(n++>0),(n++>0)为true,
输出结果为true
输出n的值,查看n++执行情况*/
System.out.println(b||(n++>0));
System.out.println(n);
输出结果:
true
1
true
3
结论:Java逻辑运算中,相较于逻辑与(&)和逻辑或(|),短路与(&&)和短路或(||)在某些情况下能减少代码的运算量,提高代码性能。