Rozdział 4 - Instrukcje warunkowe - Trój-argumentowy operator logiczny

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:

Nazwa pliku: TrojargumentowyOperatorLogiczny.java
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:

Nazwa pliku: TrojargumentowyOperatorLogiczny.java
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:

Nazwa pliku: ZagniezdzonyOperatorTrojargumentowy.java
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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.