什么是Java?:运算符被调用,它做什么?

我已经使用Java几年了,但直到最近我没有遇到这个结构:

int count = isHere ? getHereCount(index) : getAwayCount(index);

这可能是一个很简单的问题,但有人可以解释一下吗?我怎么读?我很确定我知道它是如何工作的。

> if isHere is true,getHereCount()被调用,
> if isHere is false getAwayCount()被调用。

正确?这个结构叫什么?

是的,它是一种速记形式

int count;
if (isHere)
    count = getHereCount(index);
else
    count = getAwayCount(index);

它被称为条件运算符。许多人(错误地)称之为三元运算符,因为它是Java,C,C和可能许多其他语言中唯一的三元(三参数)运算符。但是理论上可以有另一个三元运算符,而只能有一个条件运算符。

官方名称在Java Language Specification

§15.25 Conditional Operator ? :

The conditional operator ? : uses the boolean value of one expression to decide which of two other expressions should be evaluated.

请注意,两个分支都必须使用带有返回值的方法:

It is a compile-time error for either the second or the third operand expression to be an invocation of a void method.

In fact, by the grammar of expression statements (07001), it is not permitted for a conditional expression to appear in any context where an invocation of a void method could appear.

所以,如果doSomething()和doSomethingElse()是void方法,你不能压缩这:

if (someBool)
    doSomething();
else
    doSomethingElse();

进入:

someBool ? doSomething() : doSomethingElse();

简单词:

booleanCondition ? executeThisPartIfBooleanConditionIsTrue : executeThisPartIfBooleanConditionIsFalse 
http://stackoverflow.com/questions/798545/what-is-the-java-operator-called-and-what-does-it-do

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:什么是Java?:运算符被调用,它做什么?