Java三元运算符能否省略false分支?如何实现?
Java三元运算符能否省略false分支?
首先纠正你写的语法错误:你搞反了三元运算符的分支顺序,正确语法是:variable = (condition) ? 条件为true时的结果 : 条件为false时的结果;
回到你的问题:不行,三元运算符绝对不能省略任意一个分支。原因很简单——它是个表达式,必须返回一个确定的值,而不是像if那样的执行语句。if可以只处理条件为true的场景,false时啥也不做,但三元运算符的核心作用是提供二选一的返回值,用来赋值或者嵌入到其他表达式里,所以两个分支缺一不可。
如果你的需求是「条件为true时修改变量,false时保持变量原有状态(相当于不操作)」,那可以用三元运算符模拟这种效果,本质是把变量原来的值作为false分支的返回值:
int count = 5; // 条件为true时count改成10,false时保持5不变 count = (someCondition) ? 10 : count;
但这其实只是“看起来没操作”,底层还是执行了赋值操作,把原变量值重新赋给了自己。
如果你的需求是完全不产生任何操作(连赋值都不想有),那三元运算符做不到,老老实实用if语句更合理,就像你提到的:
if (someCondition) { count = 10; }
内容的提问来源于stack exchange,提问作者Kevlar
相关产品推荐
相关产品推荐

