我碰到這樣的語法來:的Java:在布爾的println(布爾 「打印真」: 「打印錯誤」)
System.out.println(boolean_variable ? "print true": "print false");
- 這是什麼語法有兩個點:叫什麼名字?
- 我在哪裏可以找到關於它的信息?
- 它只適用於布爾值,還是以其他不同的方式實現?
我碰到這樣的語法來:的Java:在布爾的println(布爾 「打印真」: 「打印錯誤」)
System.out.println(boolean_variable ? "print true": "print false");
? :
是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();
始終認爲它被稱爲三元運算符。謝謝。如果你向下滾動鏈接,它也被稱爲「三元條件運算符? :' – rajesh
@rajesh:是的,就像有「二元運算符」和「一元運算符」一樣:) –
這是一個if語句。
左邊是什麼?是條件,什麼之間?並且:如果條件爲真,則結果爲:如果條件爲假,則結果如何:是結果。
這是ternary operator(http://en.wikipedia.org/wiki/? :)。它可以在任何需要小型if
表達式的地方使用。
你指出的那篇文章中提到了?:被稱爲條件操作符,而不是三元操作符 –
這是一個三元運算符,這意味着,而不必像其他許多運營商兩個操作數,它有三個。 Wikipedia on Ternary Operation以及它如何在Java中使用。它歸結爲:評估布爾操作(或者只是一個變量)。如果它的計算結果爲true,則運算符返回值/執行:
之前的代碼,否則返回該值。
它是* a *三元操作符,因爲它有三個操作數。它只是「三元運算符」,因爲Java中沒有其他運算符帶有三個操作數,但這不是它的名稱。 –
非常真實,謝謝並糾正。 – SBI
這是三元運算符,並將其與布爾的作品。在某些情況下,它可以用作if-else的縮寫,但不應該用於太複雜的事情,因爲它可能難以閱讀。
一個例子是於根據條件的變量分配值:
String message = doOperation() ? "Success" : "Error occurred";
System.out.println(message);
在這種情況下,如果doOperation返回一個布爾值,告訴它是否成功與否,要顯示的消息可被分配上一條線。
請注意,這個例子並不代表良好的編程習慣。
問號後跟一個冒號(兩個點)是一個三元運算符,通常稱爲inline if。
在這種情況下,它取決於boolean_variable的值返回一個字符串。
請參閱here。三元運算符類似於if表達式,但不同之處在於它是一個表達式 - 它具有返回值,而如果表達式不是。有時你想用它來使你的代碼不那麼混亂。
這是有條件的經營者,通常被稱爲三元運算符,因爲它有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 ?
同樣重要的是要注意:未使用的表達式不會被評估。表達式'x!= null?當x爲空時,x.Method():0'不會觸發空引用異常。這是一個比三元運算符做同樣事情的函數的重要優點,因爲所有傳遞給函數的參數都是經過計算的。 –
細節對於你的問題:
?:
(兩個字符一起)被稱爲條件運算符(或三元運算符)。只有兩個人一起工作。原則上ternery運營商縮短if
/else
。 boolean
將作爲if的條件,?
和:
之間的部分爲if
分支,之後的部分爲else
分支。
請注意,條件運算符的返回類型由第一個分支決定。
其三元運算符。
三元運算符或?是一個簡寫if else語句。它可用於評估表達式並根據表達式的結果返回兩個操作數中的一個。
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";
}
它是if-else語句的縮寫形式。
它可以以這種方式
(yourCondition ? STATEMENT1 : STATEMENT2)
IF
它返回TRUE
然後STATEMENT1
將被執行。ELSE
STATEMENT2
將被執行。
它通常被稱爲「三元操作符/運算符」,三元= 3.它是一個if-then-else表達式,可能被鏈接:'x> 0.01? 「正面」:x <-0.01? 「否定」:「零」。鍵入:布爾?答:B'結果共同可能的A和B類。'conditon的類型? null:「」是字符串。 –