Java中&&运算符的短路求值特性及代码执行逻辑问询
Java中&&运算符的执行逻辑详解
嘿,这俩问题其实都是在问Java里&&运算符的短路求值特性,我来给你掰扯清楚:
第一个问题的答案:Java里的
&&是短路与运算符,它不会计算所有表达式再判定结果。只要从左到右遍历过程中,遇到任意一个表达式结果为false,就会立刻终止后续表达式的计算,直接返回false。这种设计不光能提升性能,还能避免后续表达式可能触发的异常(比如如果后面的表达式涉及空对象调用,短路就不会让它执行,也就不会抛空指针了)。第二个问题的具体场景:当你写
return bool1 && bool2 && bool3,且bool1=false、bool2=true、bool3=true时,Java会在检测到bool1为false的瞬间就直接返回false,完全不会去处理bool2和bool3。咱可以做个小测试验证:比如把bool2换成一个会打印日志的方法,比如:public static boolean bool2() { System.out.println("执行bool2"); return true; }运行代码后你会发现控制台根本不会输出这句话,就证明
bool2没被执行。
如果你想让所有表达式都被计算,不管前面的结果如何,可以用非短路的与运算符&,它会遍历所有表达式后再返回结果。
内容的提问来源于stack exchange,提问作者Xinyu Xiong
相关产品推荐
相关产品推荐

