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.