Java程序执行自增运算符后仅输出2未触发条件语句的原因是什么?
public static void main(String[] args) { // TODO Auto-generated method stub int j = 1; int i = 3; System.out.println(++j); if((j==1) && (i==3)) { System.out.println("j is 4 and i is 7"); } if((j==1) || (i==4)) { System.out.println("j is 4 or i is 4"); display(); } }
运行现象原因说明
- 变量初始化阶段
j=1、i=3,执行System.out.println(++j)时,++j是前置自增运算符,会先对j执行+1操作(j变为2)再输出值,因此控制台首先输出2,此时j的取值已经更新为2。 - 第一个if判断使用短路与运算符
&&,运算规则为左侧条件为false时,直接判定整个表达式为false,不会执行右侧条件判断。此处左侧j==1的判定结果为false,因此整个if条件不成立,分支内代码不会执行。 - 第二个if判断使用短路或运算符
||,运算规则为左侧条件为false时,会继续判断右侧条件,只有所有条件都为false时整个表达式才为false。此处左侧j==1判定为false,右侧i==4判定也为false(i的取值始终为3未被修改),因此整个if条件不成立,分支内代码也不会执行。
内容的提问来源于stack exchange,提问作者sarthak basnet
相关产品推荐
相关产品推荐

