2013-07-04 14 views
15

natknąłem się na ten składnię:Java: Boolean w println (logiczna "print prawdziwe?": "Print false")

System.out.println(boolean_variable ? "print true": "print false"); 
  • Co to jest składnia z dwoma kropkami: nazywa?
  • Gdzie mogę znaleźć informacje na jego temat?
  • Czy działa tylko dla boole'ów lub jest realizowany na inne sposoby?
+0

Jest to często określane jako "potrójna operacja/operator", ternary = 3. Jest to wyrażenie if-then-else i może być powiązane: 'x> 0.01? "pozytywny": x <-0.01? "negative": "zero" '. Wpisywanie: 'boolean? A: B' z wynikiem pospolita możliwa klasa A i B. Typ 'conditon? null: "" 'jest String. –

Odpowiedz

54

? : jest conditional operator. (To nie tylko część : - cały argument metody to jedno użycie operatora warunkowego w twoim przykładzie.)

Jest często nazywany operatorem trójskładnikowym, ale to tylko jeden aspekt jego natury - posiadanie trzech argumentów - zamiast jego nazwy. Jeśli inny operator trójskładnikowy zostanie kiedykolwiek wprowadzony w Javie, termin ten stanie się niejednoznaczny. Nazywa się to operatorem warunkowym, ponieważ ma on warunek (pierwszy operand), który następnie określa, który z dwóch pozostałych argumentów jest oceniany.

Pierwszy argument jest oceniana, a następnie albo drugi lub trzeci argument jest oceniana na podstawie tego, czy pierwszy argument jest prawda czy fałsz ...a to kończy się w wyniku operatora.

Więc coś takiego:

int x = condition() ? result1() : result2(); 

jest grubsza odpowiada:

int x; 
if (condition()) { 
    x = result1(); 
} else { 
    x = result2(); 
} 

To ważne, że nie ocenić inne argumentu. Tak na przykład, to jest w porządku:

String text = getSomeStringReferenceWhichMightBeNull(); 
int usefulCharacters = text == null ? 0 : text.length(); 
+0

Zawsze zakładano, że był to operator trójskładnikowy. Dzięki. Jeśli przewinąć link w dół, jest on również wymieniony jako 'Ternary operator warunkowy? : ' – rajesh

+4

@rajesh: Tak, w ten sam sposób, w jaki istnieje" operator binarny + "i" operator jednoargumentowy ":) –

2

To stwierdzenie, jeśli.

Co jest po lewej stronie? jest warunek, co jest pomiędzy? i: jest wynikiem, jeśli warunek jest prawdziwy, a to, co jest po prawej stronie: jest wynikiem, jeśli warunek jest fałszywy.

4

Jest to operator trójskładnikowy, co oznacza, że ​​zamiast dwóch operandów, jak wielu innych operatorów, ma trzy. Wikipedia on Ternary Operation i jak jest używany w Java. Sprowadza się to do: operacji boolowskiej (lub tylko zmiennej). Jeśli wartość jest równa true, operator zwraca wartość/wykonuje kod przed numerem :, w przeciwnym razie po nim.

+6

Jest to * trójskładnikowy operator, ponieważ ma trzy operandy. To jest tylko "ten" trójskładnikowy operator, ponieważ nie ma żadnych innych operatorów w Javie z trzema operandami, ale to nie jest jego nazwa. –

+0

Bardzo prawdziwe, dzięki i poprawione. – SBI

1

Jest to operator trójskładnikowy i działa z logami bajtowymi. Może być używany jako skrót, jeśli-w niektórych przypadkach, ale nie powinien być używany do zbyt skomplikowanych rzeczy, ponieważ może być trudny do odczytania.

Przykładem może być przypisanie wartości do zmiennej w zależności od warunku:

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

W tym przypadku, jeśli doOperation zwraca wartość logiczną informacją, czy to się udało czy nie, komunikat być wyświetlane mogą być przypisane na pojedyncza linia.

Należy pamiętać, że ten przykład nie przedstawia dobrych praktyk programistycznych.

0

Znak zapytania, a następnie dwukropek (dwie kropki) to operator trójskładnikowy, zwykle nazywany w linii, jeśli.

W tym przypadku zwraca ciąg znaków w zależności od wartości zmiennej boolean.

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

0

Zobacz here. Operator potrójny jest podobny do wyrażenia if, ale różni się tym, że jest wyrażeniem - ma wartość zwracaną, a jeśli wyrażenia nie. Czasami chcesz go użyć, aby twój kod był trochę mniej zagracony.

20

To operator warunkowy, często nazywany operatorem trójargumentowy ponieważ ma 3 wielkości: Przykładem może być:

int foo = 10; 
int bar = foo > 5 ? 1 : 2; // will be 1 
int baz = foo > 15 ? 3 : 4; // will be 4 

Więc jeśli wyrażenie boolean ocenia się true, zwróci pierwszą wartość (przed dwukropek), w przeciwnym razie druga wartość (po dwukropku).

można przeczytać o szczegółach w Java Language Specification, Chapter 15.25 Conditional Operator ?

+4

Należy również zwrócić uwagę: wyrażenie, które nie jest używane, nie jest oceniane. Wyrażenie "x! = Null? x.Method(): 0' nie wywoła wyjątku odwołania zerowego, gdy x ma wartość null. Jest to ważna przewaga nad funkcją, która działa tak samo, jak operator potrójny, ponieważ wszystkie argumenty przekazywane do funkcji są zawsze oceniane. –

2

Na pytania:

  1. The ?: (obie postacie razem) są nazywane operator warunkowy (lub operator trójargumentowy). Działają tylko oba te elementy.
  2. Szukaj operatora java ternery
  3. To działa tylko na logiczną

W zasadzie operator ternery jest skróconą if/else. Parametr boolean będzie warunkiem dla części if między ? i : jest gałęzią if, a częścią po niej jest gałąź else.

Należy pamiętać, że typ zwrotu operatora warunkowego jest określony przez pierwszy oddział.

1

Jest to operator trójskładnikowy.

Operator trójskładnikowy lub?, Jest skrótową instrukcją if. Może służyć do oceny wyrażenia i powrotu jednego z dwóch argumentów w zależności od wyniku wyrażenia.

boolean b = true; 
String s = (b == true ? "True" : "False"); 

Spowoduje to ustawienie wartości ciągu s zgodnie z wartością logiczną b. Można to napisać, używając instrukcji if else:

boolean b = true; 
String s; 
if(b == true){ 
    s = "True"; 
}else{ 
    s = "False"; 
} 
1

Jest to krótka forma instrukcji if-else.

To działa w ten sposób

(yourCondition ? STATEMENT1 : STATEMENT2) 
  • Kontrole kompilator kondycji.
  • IF to zwraca TRUE następnie zostanie wykonane STATEMENT1.
  • ELSESTATEMENT2 zostanie wykonane.