? :是
conditional operator.(它不仅仅是:部分 – 整个方法参数是你的例子中的条件运算符的一个用法.)
它通常称为三元运算符,但这只是其性质的一个方面 – 具有三个操作数 – 而不是其名称.如果另一个三元运算符被引入到Java中,那么这个术语就会变得模糊.它被称为条件运算符,因为它具有条件(第一个操作数),然后确定其他两个操作数中的哪一个被评估.
对第一个操作数进行评估,然后根据第一个操作数是真还是假来评估第二个操作数或第三个操作数,并且最终作为操作符的结果.
所以这样的事情
int x = condition() ? result1() : result2();
大致相当于:
int x;
if (condition()) {
x = result1();
} else {
x = result2();
}
重要的是它不评估另一个操作数.所以例如,这很好:
String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();