题目描述

难度:简单

/**
* 短路与和逻辑与
*/
public class question_03 {
public static void main(String[] args){
int i=5;
boolean e = i > 6 & i++ > 7;
System.out.println(e);
System.out.println(i);
e = i > 6 && i++ > 7;
System.out.println(e);
System.out.println(i);
}
}

请写出以上代码的输出

知识点

  • 关系运算符
  • 自增运算

解题思路

  • 逻辑与(&)和短路与(&&)在运算上对条件的结果判断不会产生影响,但会对条件本身的运算有影响。
  • 逻辑与(&)在运算时会连续运算所有需要判断的命令.但短路与当遇到false时就停止运算。

代码实现

分析

第一次判断是逻辑与,老实人不管对错,全部计算一下,则​​i++​​被执行,输出​​e=false;i=6​​;

第二次判断是短路与,机灵鬼先判断第一个是错的,就不再往下计算,​​i++​​不被执行,输出​​e=false;i=6​​;

验证

【Java入门练习100例】03.短路与和逻辑与的区别——老实人和机灵鬼_java

总结

在实际开发中为了增强代码的可读性,统一使用短路与,且不在判断条件中做任何运算。