JavaRush /Java-Blog /Random-DE /Ternärer Operator in Java

Ternärer Operator in Java

Veröffentlicht in der Gruppe Random-DE
Hallo! Die heutige Vorlesung wird nicht sehr lang sein, aber auf jeden Fall nützlich sein :) Wir werden über den sogenannten ternären Operator sprechen . Ternärer Operator - 1„Ternär“ bedeutet „dreifach“. Dies ist eine Alternative zum bedingten Operator if-else, mit dem Sie bereits vertraut sind. Geben wir ein Beispiel. Nehmen wir an, eine Person beschließt, ins Kino zu gehen, um einen Film mit einer Altersfreigabe ab 18 Jahren anzusehen. Am Eingang überprüft der Wachmann sein Alter: Erfüllt er die Altersgrenze, lässt er ihn in die Halle, andernfalls schickt er ihn nach Hause. Erstellen wir eine Klasse Manund überprüfen sie mit if-else:
public class Man {

   private int age;

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

   public int getAge() {
       return age;
   }

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

   public static void main(String[] args) {

       Man man = new Man(22);

       String securityAnswer;

       if (man.getAge() >= 18) {
           securityAnswer = „Es ist alles in Ordnung, komm rein!“;
       } else {
           securityAnswer = „Dieser Film ist nicht für Ihr Alter geeignet!“;
       }

       System.out.println(securityAnswer);

   }
}
Konsolenausgabe:

"Все в порядке, проходите!"
Wenn wir die Ausgabe auf die Konsole entfernen, sieht unser Test so aus:
if (man.getAge() >= 18) {
           securityAnswer = „Es ist alles in Ordnung, komm rein!“;
       } else {
           securityAnswer = „Dieser Film ist nicht für Ihr Alter geeignet!“;
       }
Hier funktioniert tatsächlich eine einfache Logik: Eine Bedingung wird überprüft (Alter >= 18). Abhängig davon securityAnswerwird der Variablen eine von zwei Zeilen mit der Antwort des Wächters zugewiesen. Solche Situationen „eine Bedingung – zwei mögliche Ergebnisse“ kommen in der Programmierung sehr häufig vor. Daher wurde für sie derselbe ternäre Operator erstellt. Damit können wir unsere Verifizierung auf eine Codezeile vereinfachen:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = (man.getAge() >= 18) ? „Es ist alles in Ordnung, komm rein!“ : „Dieser Film ist nicht für Ihr Alter geeignet!“;

   System.out.println(securityAnswer);

}
So sieht die Arbeit dieses Operators aus. Es wird ternär (dreifach) genannt, weil an seiner Arbeit drei Komponenten beteiligt sind:
  • Eine Bedingung ( man.getAge() >= 18)
  • Zwei mögliche Ergebnisse ( „Es ist okay, mach weiter!“ und „Dieser Film ist nicht für dein Alter geeignet!“ )
Zunächst wird eine Bedingung in den Code geschrieben, gefolgt von einem Fragezeichen.
man.getAge() >= 18 ?
„Ist das Alter der Person größer oder gleich 18 Jahren?“ Das Folgende ist das erste Ergebnis. Es wird ausgelöst, wenn die Bedingung zurückkehrt true, also wahr ist:
String securityAnswer = man.getAge() >= 18 ? „Es ist alles in Ordnung, komm rein!“
Ist die Person mindestens 18 Jahre alt? Wenn ja, weisen Sie der Variablen securityAnswer den Wert „Alles ist gut, kommen Sie rein!“ zu. . Darauf folgt der :Operator „ “, nach dem das zweite Ergebnis geschrieben wird. Es wird ausgelöst, wenn die Bedingung zurückkehrt false, also falsch ist:
String securityAnswer = man.getAge() >= 18 ? „Es ist alles in Ordnung, komm rein!“ : „Dieser Film ist nicht für Ihr Alter geeignet!“;
Ist die Person mindestens 18 Jahre alt? Wenn ja, weisen Sie der Variablen securityAnswer den Wert „Alles ist gut, kommen Sie rein!“ zu. . Wenn nicht, weisen Sie der Variablen securityAnswer den Wert „Dieser Film ist nicht für Ihr Alter geeignet!“ zu. So sieht die allgemeine Logik des ternären Operators aus. Zustand ? Ergebnis 1 : Ergebnis 2 Ternärer Operator - 2Übrigens ist es nicht notwendig, die Bedingung in Klammern zu setzen: Wir haben dies zur besseren Lesbarkeit getan. Ohne sie geht es:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = man.getAge() >= 18 ? „Es ist alles in Ordnung, komm rein!“ : „Dieser Film ist nicht für Ihr Alter geeignet!“;

   System.out.println(securityAnswer);

}
Was sollten Sie verwenden: if-elseoder den ternären Operator? Leistungsmäßig gibt es keinen großen Unterschied. Genauer gesagt mag es existieren, aber es ist unbedeutend. Hier geht es eher um die Lesbarkeit Ihres Codes. Beim Programmieren ist es äußerst wichtig: Der Code, den Sie schreiben, muss nicht nur korrekt funktionieren, sondern auch leicht lesbar sein. Schließlich kann es an andere Programmierer, Ihre Kollegen, „vererbt“ werden! Und wenn es schwer zu verstehen ist, wird es sowohl ihre als auch Ihre Arbeit erschweren – sie werden alle 5 Minuten zu Ihnen rennen, um Erklärungen zu erhalten. Eine allgemeine Empfehlung könnte so klingen: Wenn die Bedingung einfach und leicht zu überprüfen ist, können Sie den ternären Operator ohne Schaden verwenden. Auf diese Weise reduzieren Sie die Menge an Code und die Anzahl der Prüfungen if-else, von denen es möglicherweise bereits viele gibt. Wenn die Erkrankung jedoch komplex und mehrstufig ist, ist es besser, sie zu verwenden if-else. In diesem Fall wäre es beispielsweise keine gute Idee, den ternären Operator zu verwenden:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Komm herein!" : "Sie können nicht durchgehen!";
Sie werden also nicht sofort verstehen, was hier vor sich geht! Der Code ist sehr schwer lesbar geworden. Und das alles wegen einer schwierigen Situation:
  • Wenn eine Person mindestens 18 Jahre alt ist + eine Eintrittskarte (oder einen Coupon für freien Eintritt) besitzt + keine kleinen Kinder dabei hat, kann sie passieren.
  • Wenn mindestens ein Teil der Bedingung „falsch“ zurückgibt, ist dies nicht möglich.
Hier wäre es eindeutig besser if-else, . Ja, unser Code wäre größer, aber um ein Vielfaches besser lesbar. Und keiner Ihrer Kollegen wird sich an den Kopf fassen, wenn er solchen Code erbt :) Abschließend kann ich Ihnen das Buch empfehlen. In der Vorlesung haben wir das Thema Code-Lesbarkeit angesprochen. Ihr ist das klassische Buch „Clean Code“ von Robert Martin gewidmet. Ternärer Operator - 3Es enthält Best Practices und Empfehlungen für Programmierer, die es Ihnen ermöglichen, nicht nur funktionierenden, sondern auch leicht lesbaren Code zu schreiben. Es gibt eine Rezension zu diesem Buch auf JavaRush.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION