我已经使用 Java 几年了,但直到最近我还没有遇到过这个结构:
int count = isHere ? getHereCount(index) : getAwayCount(index);
这可能是一个非常简单的问题,但是有人可以解释一下吗?我如何阅读它?我很确定我知道它是如何工作的。
- 如果
isHere
为真,则调用getHereCount()
, - 如果
isHere
为假getAwayCount()
被调用。
正确的?这个结构叫什么?
原文由 mainstringargs 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,它是
它被称为 条件运算符。许多人(错误地)将其 _称为三元运算符_,因为它是 Java、C、C++ 以及可能许多其他语言中唯一的三元(三参数)运算符。但理论上 可以 有另一个三元运算符,而只能有一个 _条件运算符_。
Java Language Specification 中给出了正式名称:
请注意,两个分支都必须指向具有返回值的方法:
所以,如果
doSomething()
和doSomethingElse()
是无效的方法,你不能压缩这个:进入这个:
简单的话: