我遇到了这个语法:
System.out.println(boolean_variable ? "print true": "print false");
- 这个带有两个点 : 的语法叫什么?
- 我在哪里可以找到相关信息?
- 它只适用于布尔值还是还有其他实现方式?
? :
是条件运算符。在你的示例中,整个方法参数都是条件运算符的一个用法,而不仅仅是:
部分。int x = condition() ? result1() : result2();
大致等同于:
int x;
if (condition()) {
x = result1();
} else {
x = result2();
}
重要的是它不评估其他操作数。所以例如,这样是可以的:
String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();
x
的类型是Integer
而不是int
,result1()
返回Integer
而result2()
返回int
,那么将会有一个非常重要的区别:条件表达式的推断类型将是int
而不是Integer
,因此result1()
的结果将被取消装箱然后重新装箱,这可能会导致空指针异常(NullPointerException)如果它返回null。正是这种微妙的细节让我写下“大致等价”来规避风险。 - Jon Skeet这是条件运算符,通常被称为三元运算符,因为它有三个操作数:例如:
int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4
所以,如果布尔表达式评估为true,则它将返回冒号前的第一个值,否则返回冒号后的第二个值。您可以在《Java语言规范》第15.25章中的条件运算符中阅读具体信息。x != null ? x.Method() : 0
不会触发空引用异常。这是三元运算符与执行相同功能函数的一个重要优势,因为传递给函数的所有参数都会被评估。 - Craig Gidney这是一个三元操作符,与许多其他运算符不同,它有三个操作数。具体可参考维基百科关于三元操作符的介绍以及在Java中的应用。简单来说:布尔运算(或变量)会被求值。如果它求值为真,那么操作符返回:
之前的值/执行其代码,否则则返回:
后面的值/执行其代码。
这是一个if语句。
问号左边的是条件,问号和冒号之间的是条件为真时的结果,冒号右边的是条件为假时的结果。
这是三元运算符(http://en.wikipedia.org/wiki/?:)。当你需要一个小的if
表达式时,它可以在任何地方使用。
String message = doOperation() ? "Success" : "Error occurred";
System.out.println(message);
它的三元运算符。
三元运算符或 ? 是一个简写的 if else 语句。它可以用于评估表达式并根据表达式的结果返回两个操作数中的一个。
boolean b = true;
String s = ( b == true ? "True" : "False" );
boolean b = true;
String s;
if(b == true){
s = "True";
}else{
s = "False";
}
这是if-else语句的简写形式。
它的工作方式如下
(yourCondition ? STATEMENT1 : STATEMENT2)
IF
返回 TRUE
,则执行 STATEMENT1
。ELSE
STATEMENT2
。
x > 0.01 ? "positive" : x < -0.01 ? "negative" : "zero"
。键入:boolean ? A : B
将得到A和B的共同可能类。conditon? null :""
的类型是字符串。 - Joop Eggen