我遇到了这种语法:
System.out.println(boolean_variable ? "print true": "print false");
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 55
? :是条件运算符.(它不仅仅是:部分 - 整个方法参数是示例中条件运算符的一种用法.)
它通常被称为三元运算符,但这只是其本质的一个方面 - 有三个操作数 - 而不是它的名字.如果将另一个三元运算符引入Java,则该术语将变得模糊不清.它被称为条件运算符,因为它有一个条件(第一个操作数),然后它决定评估其他两个操作数中的哪一个.
第一操作数进行评估,然后要么在第二或第三操作数基于所述第一操作数是真还是假评价...和作为操作者的结果是结束.
所以像这样:
int x = condition() ? result1() : result2();
Run Code Online (Sandbox Code Playgroud)
大致相当于:
int x;
if (condition()) {
x = result1();
} else {
x = result2();
}
Run Code Online (Sandbox Code Playgroud)
重要的是它不评估其他操作数.所以,例如,这很好:
String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();
Run Code Online (Sandbox Code Playgroud)
jlo*_*rdo 20
它是条件运算符,通常称为三元运算符,因为它有3个操作数:例如:
int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4
Run Code Online (Sandbox Code Playgroud)
因此,如果boolean表达式求值为true,它将返回第一个值(冒号前),否则返回第二个值(冒号后).
您可以阅读Java语言规范,第15.25节"条件运算符"中的细节?
| 归档时间: |
|
| 查看次数: |
19839 次 |
| 最近记录: |