是否有一个高级的if语句没有Java中的else部分?

use*_*042 2 java conditional-operator

我知道你可以在java中使用这样的东西:

(a > b) ? a : b;
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*hes 13

它是一个表达式,而不是一个声明,这意味着它总是评估某种东西.如果没有"其他部分",那么如果测试结果为假,那么表达式将无法进行评估.所以,不,没有其他没有类似的东西.

我喜欢使用条件运算符的是你可以分配类似的东西

foo =  a > b ? c : d;
Run Code Online (Sandbox Code Playgroud)

并且阅读它你知道foo有一些东西分配给它,无论测试是否真实.因此,它为您提供了一种方法来指示分配的值取决于某些测试.

Groovy有一些类似的运算符:

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

?.,如果左侧的计算结果为null,则safe-null运算符的计算结果为null.这对于你有一系列可能为空的东西的情况很方便,例如foo?.bar?.baz,如果某些东西是空的,你宁愿不用NPE,但是不想输入所有的空检查.