Spis treści
- Rozdział 4 - Instrukcje warunkowe
- Podstawy instrukcji warunkowych
- Operatory relacyjne
- Typ boolean
- Warunki instrukcji if
- Operatory warunkowe i operator logiczny !
- Tablica prawdy operatorów warunkowych
- Nawiasy i priorytety operatorów warunkowych
- Short-circuit evaluation
- Zagnieżdżanie instrukcji warunkowych
- Bloki kodu i zakresy zmiennych
- Instrukcja switch
- Trój-argumentowy operator logiczny
- Podsumowanie
- Pytania
- Zadania
Trój-argumentowy (ternary operator) operator logiczny jest jedynym trój-argumentowym operatorem w języku Java.
Operator ten może posłużyć jako skrócona forma prostych instrukcji warunkowych – jego składnia jest następująca:
wyrazenieLogiczne ? wyrazenieGdyPrawda : wyrazenieGdyFalsz
Działanie jest następujące: jeżeli wartość wyrażenia wyrazenieLogiczne jest prawdą (true), to wartością całego wyrażenia będzie wyrazenieGdyPrawda. W przeciwnym razie, gdy wyrazenieLogiczne jest fałszem (false), zwrócone zostanie wyrazenieGdyFalsz.
Spójrzmy na poniższy przykład instrukcji if oraz użycia trój-argumentowego operatora logicznego w celu zastąpienia instrukcji if:
public class TrojargumentowyOperatorLogiczny {
public static void main(String[] args) {
int x = -5;
int wartoscAbsolutna;
if (x >= 0) {
wartoscAbsolutna = x;
} else {
wartoscAbsolutna = -x;
}
System.out.println(
"Wartosc absolutna liczby " + x + " wynosi " + wartoscAbsolutna
);
}
}
Ten prosty program wyznacza wartość absolutną liczby x. Spójrzmy na ten sam program, w którym zamiast z instrukcji warunkowej, korzystamy z trój-argumentowego operatora logicznego:
public class TrojargumentowyOperatorLogiczny {
public static void main(String[] args) {
int x = -5;
int wartoscAbsolutna;
wartoscAbsolutna = x >= 0 ? x : -x;
System.out.println(
"Wartosc absolutna liczby " + x + " wynosi " + wartoscAbsolutna
);
}
}
Tym razem wartość absolutną wyznaczamy za pomocą trój-argumentowego operatora logicznego. Jeżeli x >= 0, to wartością wyrażenia, która zostanie przypisana do zmiennej wartoscAbsolutna, będzie po prostu wartość zmiennej x. Jeżli jednak x jest mniejsze od zera, to do zmiennej wartoscAbsolutna zostanie przypisana liczba przeciwna do x, czyli -x.
Użycie operatora logicznego może być zagnieżdżone:
public class ZagniezdzonyOperatorTrojargumentowy {
public static void main(String[] args) {
int y = -2;
String komunikat;
if (y < 0) {
komunikat = "mniejsze od zero";
} else if (y > 0) {
komunikat = "wieksze od zero";
} else {
komunikat = "rowne zero";
}
// powyższe, zapisane przy uzyciu zagniezdzonych
// troj-argumentowych operatorow logicznych
komunikat = y < 0 ? "mniejsze od zero" :
(y > 0 ? "wieksze od zero" : "rowne zero");
}
}
W tym przykładzie, za pomocą trój-argumentowego operatora logicznego przypiszemy zmiennej komunikat wartość "mniejsze od zero", gdy y < 0. Jeżeli jednak wartość zmiennej y jest większa bądź równa zero, to ponownie wykorzystany zostanie trój-argumentowy operator logiczny:
y > 0 ? "wieksze od zero" : "rowne zero"
Jeżeli y > > 0, to wartością całego wyrażenia będzie "wieksze od zero" i taką wartość otrzyma zmienna komunikat. W przeciwnym razie, wartością będzie "rowne zero".
Trój-argumentowego operatora logicznego nie należy nadużywać – jeżeli mamy kilka warunków lub jeden skomplikowany warunek, lepiej zastosować instrukcję warunkową if, by nasz kod był bardziej czytelny.
Brakuje tutaj w kodzie wyświetlenia komunikat:
System.out.println(komunikat);
Faktycznie, dziękuję za zwrócenie uwagi 🙂