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

Java中是否有一个没有else部分的条件运算符?,java,conditional-operator,Java,Conditional Operator,我知道您可以在Java中使用如下内容: (a > b) ? a : b; 除了else部分,还有类似的东西吗?它是一个表达式,而不是一个语句,这意味着它总是计算为某个东西。如果没有“else-part”,那么如果测试为false,表达式将没有任何计算结果。所以,不,没有其他的东西就没有类似的东西 我喜欢使用的一点是,您可以指定 foo = a > b ? c : d; 读了它,你知道foo得到了一些分配给它的东西,不管测试是否正确。因此,它为您提供了一种方法来指示分配的值取决于

我知道您可以在Java中使用如下内容:

(a > b) ? a : b;

除了else部分,还有类似的东西吗?

它是一个表达式,而不是一个语句,这意味着它总是计算为某个东西。如果没有“else-part”,那么如果测试为false,表达式将没有任何计算结果。所以,不,没有其他的东西就没有类似的东西

我喜欢使用的一点是,您可以指定

foo =  a > b ? c : d;
读了它,你知道foo得到了一些分配给它的东西,不管测试是否正确。因此,它为您提供了一种方法来指示分配的值取决于某个测试

Groovy有一些类似的操作符:

?:
,Elvis运算符,如果左侧的表达式为空,则将右侧的值指定为默认值


?。
,安全的null运算符,如果左侧的计算结果为null,则计算结果为null。如果你有一系列可能为空的东西,比如
foo?.bar?.baz
,如果某个东西为空,你就不想用NPE爆炸,而是不想键入所有的空检查。不,没有。这没有道理


?:
是三元比较运算符-一个表达式。如果没有else语句,表达式的值是多少?C#有一个速记版本
,但这只是语法上的糖分,Java没有任何类似的东西。

我猜你是在用它给一个变量赋值,我称之为“C”,这个想法是你只想在if语句为true时赋值。通常的做法是:

if(a > b) c = a;
但是如果你真的想使用三元语法,你可以写:

c = a > b ? a : c;

请注意,三元参数是可选的,因此我省略了它们。

else
部分是可选的,否?如果表达式为false,值会是多少?如果没有
else
,则只需执行
如果(a>b)z=a
。我不明白你的意思。该死,比我快24秒。简单解释一下编辑就是三元运算符。(很抱歉,由于六个字母的编辑限制,无法改进您的答案。)@nutlike:严格来说,jls称之为条件运算符。内森·休斯:谢谢你的评论(以及你答案中的链接)——我也不知道。为了完整起见:.@nutlike-Oops,我不知道我对“trinary”是怎么想的。固定的。