繁体   English   中英

在Java中是否存在没有else部分的条件运算符?

[英]Is there a conditional operator without the else part in Java?

我知道您可以在Java中使用如下代码:

(a > b) ? a : b;

没有其余部分,是否有类似的东西?

它是一个表达式,而不是语句,这意味着它始终会求值。 如果没有“其他部分”,则表达式将不会评估测试是否为假。 因此,不,没有其他就没有相似之处。

我喜欢使用条件运算符的地方是,您可以分配类似

foo =  a > b ? c : d;

阅读它,您知道foo被分配了一些东西,而不管测试是否正确。 因此,它为您提供了一种方法来指示已分配的值取决于某些测试。

Groovy有一些类似的运算符:

如果左边的表达式为null,则Elvis运算符?:将右边的值分配为默认值。

?. (如果为null,则安全null运算符)为null。 这对于您有可能为零的事物链(例如foo?.bar?.baz情况非常方便,在这种情况下,如果某些事物为空,您宁愿不让NPE foo?.bar?.baz ,而宁愿不键入所有的空值检查。

不,没有。 这是没有道理的。

?:是三元比较运算符-一个表达式。 如果没有其他语句,则表达式的值是什么? C#有一个简写版本?? 但这只是语法上的糖,Java根本没有这样的东西。

我猜想您正在使用它来为var赋值,我将其称为“ c”,并且想法是您只想在if语句为true时才赋值。 正常的方式是:

if(a > b) c = a;

但是,如果您真的想使用三元语法,可以编写:

c = a > b ? a : c;

注意,三元括号是可选的,因此我省略了它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM