2013-07-04 77 views
15

我碰到這樣的語法來:的Java:在布爾的println(布爾 「打印真」: 「打印錯誤」)

System.out.println(boolean_variable ? "print true": "print false"); 
  • 這是什麼語法有兩個點:叫什麼名字?
  • 我在哪裏可以找到關於它的信息?
  • 它只適用於布爾值,還是以其他不同的方式實現?
+0

它通常被稱爲「三元操作符/運算符」,三元= 3.它是一個if-then-else表達式,可能被鏈接:'x> 0.01? 「正面」:x <-0.01? 「否定」:「零」。鍵入:布爾?答:B'結果共同可能的A和B類。'conditon的類型? null:「」是字符串。 –

回答

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(); 
+0

始終認爲它被稱爲三元運算符。謝謝。如果你向下滾動鏈接,它也被稱爲「三元條件運算符? :' – rajesh

+4

@rajesh:是的,就像有「二元運算符」和「一元運算符」一樣:) –

2

這是一個if語句。

左邊是什麼?是條件,什麼之間?並且:如果條件爲真,則結果爲:如果條件爲假,則結果如何:是結果。

4

這是一個三元運算符,這意味着,而不必像其他許多運營商兩個操作數,它有三個。 Wikipedia on Ternary Operation以及它如何在Java中使用。它歸結爲:評估布爾操作(或者只是一個變量)。如果它的計算結果爲true,則運算符返回值/執行:之前的代碼,否則返回該值。

+6

它是* a *三元操作符,因爲它有三個操作數。它只是「三元運算符」,因爲Java中沒有其他運算符帶有三個操作數,但這不是它的名稱。 –

+0

非常真實,謝謝並糾正。 – SBI

1

這是三元運算符,並將其與布爾的作品。在某些情況下,它可以用作if-else的縮寫,但不應該用於太複雜的事情,因爲它可能難以閱讀。

一個例子是於根據條件的變量分配值:

String message = doOperation() ? "Success" : "Error occurred"; 
System.out.println(message); 

在這種情況下,如果doOperation返回一個布爾值,告訴它是否成功與否,要顯示的消息可被分配上一條線。

請注意,這個例子並不代表良好的編程習慣。

0

問號後跟一個冒號(兩個點)是一個三元運算符,通常稱爲inline if。

在這種情況下,它取決於boolean_variable的值返回一個字符串。

http://en.wikipedia.org/wiki/%3F

0

請參閱here。三元運算符類似於if表達式,但不同之處在於它是一個表達式 - 它具有返回值,而如果表達式不是。有時你想用它來使你的代碼不那麼混亂。

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 ?

+4

同樣重要的是要注意:未使用的表達式不會被評估。表達式'x!= null?當x爲空時,x.Method():0'不會觸發空引用異常。這是一個比三元運算符做同樣事情的函數的重要優點,因爲所有傳遞給函數的參數都是經過計算的。 –

2

細節對於你的問題:

  1. ?:(兩個字符一起)被稱爲條件運算符(或三元運算符)。只有兩個人一起工作。
  2. 搜索的Java ternery操作
  3. 它僅適用於布爾

原則上ternery運營商縮短if/elseboolean將作爲if的條件,?:之間的部分爲if分支,之後的部分爲else分支。

請注意,條件運算符的返回類型由第一個分支決定。

1

其三元運算符。

三元運算符或?是一個簡寫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"; 
} 
1

它是if-else語句的縮寫形式。

它可以以這種方式

(yourCondition ? STATEMENT1 : STATEMENT2) 
  • 編譯器檢查的條件。
  • IF它返回TRUE然後STATEMENT1將被執行。
  • ELSESTATEMENT2將被執行。