Java中有没有没有没有else部分的条件运算符? 4 月,2 周 Questions & Answers 5800 我知道你可以在Java中使用这样的东西: (a > b) ? a : b; 除了其他部分,还有类似的东西吗
# 1 楼答案 它是一个表达式,而不是一个语句,这意味着它的计算结果总是有意义的。如果没有“else part”,那么如果测试为false,表达式就没有任何计算结果。所以,不,没有其他东西就没有相似之处 我喜欢使用conditional operator的一点是,可以指定 foo = a > b ? c : d; 读了它,你知道foo得到了分配给它的东西,不管测试是否正确。因此,它为您提供了一种方法来指示分配的值取决于某个测试 Groovy有一些类似的操作符: 如果左侧的表达式为空,Elvis运算符?:会将右侧的值指定为默认值 如果左侧的计算结果为null,则安全的null运算符?.的计算结果为null。如果你有一系列可能为空的东西,比如foo?.bar?.baz,如果某个东西为空,你不想用NPE爆炸,但不想键入所有的空检查,那么这种方法很方便
# 2 楼答案 我猜你是在用它给一个变量赋值,我称之为“c”,你只想在if语句为真时赋值。通常的做法是: if(a > b) c = a; 但是如果你真的想使用三元语法,你可以写: c = a > b ? a : c; 注意,三元参数是可选的,所以我省略了它们
# 1 楼答案
它是一个表达式,而不是一个语句,这意味着它的计算结果总是有意义的。如果没有“else part”,那么如果测试为false,表达式就没有任何计算结果。所以,不,没有其他东西就没有相似之处
我喜欢使用conditional operator的一点是,可以指定
读了它,你知道foo得到了分配给它的东西,不管测试是否正确。因此,它为您提供了一种方法来指示分配的值取决于某个测试
Groovy有一些类似的操作符:
如果左侧的表达式为空,Elvis运算符
?:
会将右侧的值指定为默认值如果左侧的计算结果为null,则安全的null运算符
?.
的计算结果为null。如果你有一系列可能为空的东西,比如foo?.bar?.baz
,如果某个东西为空,你不想用NPE爆炸,但不想键入所有的空检查,那么这种方法很方便# 2 楼答案
我猜你是在用它给一个变量赋值,我称之为“c”,你只想在if语句为真时赋值。通常的做法是:
但是如果你真的想使用三元语法,你可以写:
注意,三元参数是可选的,所以我省略了它们
# 3 楼答案
没有,没有道理
?:
是三元比较运算符——一个表达式。如果没有其他语句,表达式的值是什么?C#有一个速记版本??
,但这只是语法上的糖分,Java没有类似的东西