Java三元运算示例代码输出为1的执行逻辑答疑
代码执行逻辑详解
核心是Java三元运算符和自增/自减运算符的执行规则,逐行拆解如下:
- 首先明确三元运算符
判断条件 ? 分支A : 分支B的执行逻辑:
先计算判断条件的布尔值,结果为true就只执行分支A,整个表达式的返回值就是分支A的结果;结果为false就只执行分支B,整个表达式的返回值就是分支B的结果。两个分支永远只会执行其中一个,不会同时运行。 - 再明确前置自减运算符
--变量的规则:先把变量自身的值减1,再把减完后的新值作为整个自减表达式的返回值。(和后置自增变量++规则不同,后置自增是先返回变量原来的值,再给变量加1,但这段代码里后置自增的分支根本没触发)
具体到这段代码的执行步骤:
- 声明int类型变量a,初始赋值为10;声明int类型变量b,初始赋值为2
- 计算三元运算符的判断条件
a < b,也就是判断10 < 2,结果显然为false - 因为条件为false,直接跳过
a++分支(所以a的值从头到尾都是10,没有任何变化),执行--b分支 - 执行
--b时,先把b的原值2减1得到新值1,再把1作为这个自减表达式的返回值,也就是整个三元运算符的最终结果 - 调用
System.out.println打印这个结果,自然输出1
可以自行加两行代码验证:打印语句结束后分别输出a和b的值,会看到a=10、b=1,和上面的推导完全一致。
内容的提问来源于stack exchange,提问作者Rishi Ff
相关产品推荐
相关产品推荐

