我想知道这个代码是什么样子就像三元运算符三元运算符。真正为空
if (a) {
// pass
} else {
b();
}
我们没有得到(东西)的代码有一些代码B执行时,是真实的,但万一是假的( )然后执行。
所以我们写:
a ? : b();
但我不知道这是正确的,当你让真正的代码空,或者,如果你要的东西取代它。其实我从来不使用三元运算符,但我们被要求这样做。
我想知道这个代码是什么样子就像三元运算符三元运算符。真正为空
if (a) {
// pass
} else {
b();
}
我们没有得到(东西)的代码有一些代码B执行时,是真实的,但万一是假的( )然后执行。
所以我们写:
a ? : b();
但我不知道这是正确的,当你让真正的代码空,或者,如果你要的东西取代它。其实我从来不使用三元运算符,但我们被要求这样做。
如果你已经试过这段代码,那么你会得到编译器错误,因为三元运算符期望表达式而不是语句。 true
部分甚至没有表达式或语句。如果b()
返回void
,则false
部分是一个语句,而不是表达式。如果b()
返回一些东西,那么它可以被认为是一个表达式,它会没事的。
如果您有要执行的语句,并且不必选择表达式值,那么选择三元运算符上的if/else。你的第一个if/else语句可以简化为:
if (!a)
{
b();
}
这不是条件运算符是什么?它不是执行一个声明或另一个,这是评价一个表达或其他,和做出表达的结果。
你应该写你的代码为:
if (!a) {
b();
}
其实我从来没有使用三元运算符,但我们被要求这样做。
如果你被要求为这种特殊情况这么做,那么我会非常警惕谁要求你这样做。我的猜测是,这实际上不是这种情况...
这是不可能的。从Oracle官方文档摘自:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
条件运算符? :使用一个表达式 的布尔值来决定应评估哪两个其他表达式。
ConditionalExpression: ConditionalOrExpression ConditionalOrExpression ? Expression : ConditionalExpression
的 “三元” 是 “由3个部分组成” 的定义。如果您只想对您的情况进行一次可能的评估,您只需使用if语句。
downvote的任何原因? – Smittey
http://stackoverflow.com/questions/9450864/java-ternary-with-no-return-for-method-calling –