[英]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.