我遇到了这样的语法:
System.out.println(boolean_variable ? "print true": "print false");
发布于 2013-07-04 20:45:07
? :
是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();
发布于 2013-07-04 20:45:51
它是条件运算符,通常称为三元运算符,因为它有3个操作数:例如:
int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4
因此,如果boolean
表达式的计算结果为true
,它将返回第一个值(在冒号之前),否则返回第二个值(在冒号之后)。
您可以在Java Language Specification, Chapter 15.25 Conditional Operator ?
中阅读详细信息
发布于 2013-07-04 20:44:05
它是一个三元运算符,这意味着它有三个操作数,而不是像许多其他运算符那样有两个操作数。Wikipedia on Ternary Operation以及如何在Java中使用它。归结为:计算布尔运算(或者仅仅是一个变量)。如果它的计算结果为true,则运算符返回值/执行:
之前的代码,否则返回它之后的代码。
https://stackoverflow.com/questions/17470595
复制相似问题