我遇到了这种语法:
System.out.println(boolean_variable ? "print true": "print false");
答案 0 :(得分:54)
? :
是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();
答案 1 :(得分:20)
它是条件运算符,通常称为三元运算符,因为它有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 ?
答案 2 :(得分:4)
它是一个三元运算符,这意味着它不像其他许多运算符那样拥有两个操作数,而是有三个。 Wikipedia on Ternary Operation及其在Java中的使用方式。它归结为:评估布尔运算(或只是一个变量)。如果计算结果为true,则运算符返回值/执行:
之前的代码,否则执行后面的代码。
答案 3 :(得分:2)
这是一个if语句。
左边是什么?是条件,之间是什么?和:是条件为真的结果,如果条件为假,则结果是:结果是什么。
答案 4 :(得分:2)
这是ternary operator(http://en.wikipedia.org/wiki/? :)。当您需要一个小的if
表达式时,它可以在任何地方使用。
答案 5 :(得分:2)
对于你的问题:
?:
(两个字符在一起)称为条件运算符(或三元运算符)。只有两者一起工作。原则上,ternery运算符是缩写if
/ else
。 boolean
将成为if的条件,?
和:
之间的部分是if
分支,此后的部分是else
分支。
请注意,条件运算符的返回类型由第一个分支确定。
答案 6 :(得分:1)
这是三元运算符,它与布尔值一起使用。在某些情况下,它可以用作if-else的简写,但不应该用于太复杂的事情,因为它很难阅读。
一个例子是根据条件为变量赋值:
String message = doOperation() ? "Success" : "Error occurred";
System.out.println(message);
在这种情况下,如果doOperation返回一个告诉它是否成功的布尔值,则可以在一行上分配要显示的消息。
请注意,此示例并不代表良好的编程习惯。
答案 7 :(得分:1)
其三元运营商。
三元运算符或?是if语句的简写。它可用于计算表达式并根据表达式的结果返回两个操作数之一。
boolean b = true;
String s = ( b == true ? "True" : "False" );
这将根据布尔值b的值设置String的值。这可以使用if else语句编写:
boolean b = true;
String s;
if(b == true){
s = "True";
}else{
s = "False";
}
答案 8 :(得分:1)
它是if-else语句的简短形式。
以这种方式运作
(yourCondition ? STATEMENT1 : STATEMENT2)
IF
它返回TRUE
,然后STATEMENT1
将被执行。ELSE
STATEMENT2
将被执行。答案 9 :(得分:0)
问号后跟冒号(两个点)是一个三元运算符,通常称为内联if。
在这种情况下,它返回一个字符串,具体取决于boolean_variable的值。
答案 10 :(得分:0)
见here。三元运算符类似于if表达式,但不同之处在于它是一个表达式 - 它有一个返回值,而if表达式则没有。有时你想用它来使你的代码变得不那么混乱。