java中&&与||短路的详解
public void complicatedexpression_r(){ int x=20, y=30; boolean b; b = x > 50 && y > 60 || x > 50 && y < -60 || x < -50 && y > 60 || x < -50 && y < -60; System.out.println(b); } //false
&&与操作,||或操作都是短路操作符,
&&与操作时一旦遇到false就停止执行当前关系式(x > 50 && y > 60 )中的后续代码
||或操作时一旦遇到true也停止执行当前关系式中的后续代码
> ,<只会得到true/false
化简为false || false || false || false 结果为false
& ,| 没有短路效果
与 都为true才返回true,只要有true就返回true
或 都为false则返回false,只要有true就返回true
public static void main(String[] args) { int x=20, y=30; boolean b; b = x > 50 && y > 60 || x > 50 && y < -60 || x < 50 && y < 60 || x < -50 && y < -60; System.out.println(b); } false || false || true || false //true
public static void main(String[] args) { int x=20, y=30; boolean b; b = false||false|| true || false; System.out.println(b); } true //与和或的运算依据并不是所谓的真真假假,而是true/false

短路运算符只能用于逻辑表达式内,会影响返回值,返回值只会是true或false;非短路运算符可用于位表达式和逻辑表达式内
也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。
推荐使用短路运算符进行逻辑判断,因为短路运算符在一定程度上可以提高程序运行的效率
局部变量在第一次使用前必须赋值,所谓的使用就是指读取变量的值,所以这里没有任何问题,另一方面,局部变量没有默认值
最后此题即使不知道短路与 ,只要知道优先级即可做对。
优先级就不细说了,类似加减乘除运算法则。
浙公网安备 33010602011771号