? :
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();
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. –