CodeGym /Java-Blog /Random-DE /Ternärer Operator
Autor
Vasyl Malik
Senior Java Developer at CodeGym

Ternärer Operator

Veröffentlicht in der Gruppe Random-DE
Hallo! Die heutige Lektion wird nicht sehr lang sein, aber sie wird auf jeden Fall nützlich sein :) Wir werden über den sogenannten ternären Operator sprechen . Ternärer Operator - 1Ternär bedeutet „ aus drei Teilen zusammengesetzt “. Es handelt sich um eine Alternative zur if-elseKontrollflussanweisung, die Sie bereits kennengelernt haben. Geben wir ein Beispiel. Angenommen, jemand hat beschlossen, sich einen Film mit Altersfreigabe anzusehen (unter 17 Jahren ist die Begleitung eines Elternteils oder Erziehungsberechtigten erforderlich). Der Platzanweiser überprüft sein Alter an der Tür: Wenn er die Alterskontrolle bestanden hat, darf er eintreten; wenn nicht, wird er nach Hause geschickt. Lassen Sie uns eine Klasse deklarieren Personund dies mithilfe einer if-elseAnweisung überprüfen:

public class Person {

   private int age;

   public Person(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Person person = new Person(22);

       String usherResponse;

       if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }

       System.out.println(usherResponse);

   }
}
Konsolenausgabe:

"Everything is in order. Come in!"
Wenn wir die Konsolenausgabe entfernen, sieht unsere Prüfung so aus:

if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }
Die Logik ist hier sehr einfach: Es wird eine Bedingung überprüft (Alter >= 18). Basierend auf dem Ergebnis wird der Variablen usherResponseeine von zwei Zeichenfolgen mit der Antwort des Platzanweisers zugewiesen. Solche Situationen („eine Bedingung – zwei mögliche Ergebnisse“) kommen in der Programmierung äußerst häufig vor. Und deshalb wurde der ternäre Operator geschaffen. Wir können es verwenden, um unsere Prüfung auf eine einzige Codezeile zu vereinfachen:

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
So funktioniert dieser Operator. Er wird als ternärer Operator bezeichnet, da er aus drei Komponenten besteht:
  • Eine Bedingung ( person.getAge() > 18)
  • Zwei mögliche Ergebnisse ( „Alles ist in Ordnung. Kommen Sie herein!“ und „Dieser Film ist nicht für Ihr Alter geeignet!“ )
Zuerst schreiben wir die Bedingung, gefolgt von einem Fragezeichen.

person.getAge() > 18 ?
„Ist diese Person älter als 18 Jahre?“ Dann schreiben wir den ersten Wert . Dieser Wert wird verwendet , wenn die Bedingung Folgendes ergibttrue :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
Ist diese Person älter als 18 Jahre? Wenn ja, setzen Sie die usherResponse Variable auf „Alles ist in Ordnung. Treten Sie ein!“ Als nächstes kommt das „ :“-Symbol und der zweite Wert . Dieser Wert wird verwendet , wenn die Bedingung Folgendes ergibtfalse :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
Ist diese Person älter als 18 Jahre? Wenn ja, setzen Sie die usherResponse Variable auf „Alles ist in Ordnung. Treten Sie ein!“ . Wenn nicht, setzen Sie die usherResponse Variable auf „Dieser Film ist für Ihr Alter nicht geeignet!“ Im Allgemeinen sieht die Logik des ternären Operators wie folgt aus. Zustand ? Ergebnis 1: Ergebnis 2 Ternärer Operator - 2 Die Klammern um die Bedingung sind übrigens nicht erforderlich: Wir haben sie zur besseren Lesbarkeit hinzugefügt. Es geht auch ohne:

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
Was sollten Sie also verwenden? Eine if-elseAussage oder der ternäre Operator? Leistungsmäßig gibt es keinen Unterschied. Genauer gesagt, vielleicht gibt es das, aber es ist unbedeutend. Der größte Aspekt hierbei ist die Lesbarkeit Ihres Codes. Der von Ihnen geschriebene Code muss nicht nur korrekt funktionieren, sondern auch leicht lesbar sein . Schließlich könnte es von anderen Programmierern, Ihren Kollegen, „geerbt“ werden! Wenn es schwer zu verstehen ist, wird es ihre und Ihre Arbeit erschweren (alle 5 Minuten kommen sie zu Ihnen gerannt, um Erklärungen zu holen). Die allgemeine Empfehlung lautet: Wenn die Bedingung einfach und leicht zu überprüfen ist, können Sie den ternären Operator ohne Schaden verwenden. Dadurch können Sie die Codemenge und die Anzahl reduzierenif-elseAussagen (und davon könnte es bereits viele geben). Wenn die Bedingung jedoch komplex ist und mehrere Schritte umfasst, ist es besser, eine if-elseAnweisung zu verwenden. In diesem Fall wäre beispielsweise die Verwendung eines ternären Operators eine schlechte Idee:

String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
Es ist nicht sofort ersichtlich, was hier passiert! Der Code ist sehr schwer lesbar geworden. Und das alles wegen der komplexen Erkrankung:
  • Wenn jemand älter als 18 Jahre ist, ein Ticket (oder eine Freikarte) besitzt und keine kleinen Kinder hat, kann er eintreten.
  • Wenn auch nur ein Teil der Bedingung falsch ist, kann er es nicht.
Hier ist es eindeutig besser zu verwenden if-else. Ja, unser Code wird größer, aber viel besser lesbar sein. Und Ihre Kollegen werden nicht mit Palmen konfrontiert, wenn sie diesen Code erben :) Abschließend kann ich Ihnen ein gutes Produkt empfehlen. Wir haben während der Lektion die Lesbarkeit des Codes angesprochen. Diesem Thema widmet sich Robert Martins zum Klassiker gewordenes Buch „Clean Code“. Ternärer Operator - 4Es fasst Best Practices und Empfehlungen für Programmierer zusammen, die Ihnen dabei helfen, Code zu schreiben, der nicht nur funktionsfähig, sondern auch leicht lesbar ist.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION