Ternary Operator Java-ban

1. Áttekintés

A háromszintű feltételes operátor ?: lehetővé teszi számunkra a Java kifejezéseket. Ez egy tömörített formája a ha más értéket is visszaadó utasítás.

Ebben az oktatóanyagban megtudhatjuk, hogy mikor és hogyan kell használni a hármas konstrukciót. Kezdjük azzal, hogy megnézzük a szintaxisát, majd feltárjuk a használatát.

2. Szintaxis

A hármas operátor ?: Java-ban van az egyetlen operátor, amely három operandust fogad el:

logikaiExpression? kifejezés1: kifejezés2

A legelső operandusnak a logikai kifejezés, a második és a harmadik operandus lehet bármilyen kifejezés, amely valamilyen értéket ad vissza. A hármas konstrukció visszatér kifejezés1 kimenetként, ha az első operandus értékeli igaz, kifejezés2 másképp.

3. Háromszoros üzemeltető példa

Vegyük figyelembe az alábbiakat ha más konstrukció:

int szám = 8; Karakterlánc msg = ""; if (num> 10) {msg = "A szám nagyobb, mint 10"; } else {msg = "A szám kisebb vagy egyenlő 10-vel"; }

A fenti kódban értéket rendeltünk a következőhöz: üzenet feltételes értékelése alapján szám. Ezt a kódot olvashatóbbá és biztonságosabbá tehetjük a kód könnyű cseréjével ha más utasítás háromhetes konstrukcióval:

végső karakterlánc msg = szám> 10? "A szám nagyobb, mint 10": "A szám kisebb vagy egyenlő, mint 10";

4. Kifejezésértékelés

Java ternáris konstrukció használatakor a jobboldali kifejezések közül csak az egyik, azaz bármelyik kifejezés1 vagy kifejezés2 futás közben értékelik.

Kipróbálhatjuk ezt egy egyszerű írásával JUnit próbaper:

@Test public void whenConditionIsTrue_thenOnlyFirstExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int eredmény = 12> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (1); assertThat (exp2) .isEqualTo (0); assertThat (eredmény) .isEqualTo (1); }

A mi logikai kifejezés 12 > 10 mindig értékeli igaz, tehát az értéke exp2 olyan maradt, amilyen. Hasonlóképpen vegyük figyelembe, hogy mi történik a hamis feltétel:

@Test public void whenConditionIsFalse_thenOnlySecondExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int eredmény = 8> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (0); assertThat (exp2) .isEqualTo (1); assertThat (eredmény) .isEqualTo (1); }

Az értéke exp1 érintetlen maradt, és értéke exp2 1-gyel növelték.

5. Fészkelő hármas kezelő

Lehetőségünk van arra, hogy a hármas operátort tetszőleges számú szintre fészkeljük. Tehát a konstrukció:

Karakterlánc msg = num> 10? "A szám nagyobb, mint 10": szám> 5? "A szám nagyobb, mint 5": "A szám kevesebb, mint egyenlő 5-vel";

Java-ban érvényes. A fenti kód olvashatóságának javítása érdekében zárójeleket használhatunk (), ahol szükséges:

Karakterlánc msg = num> 10? "A szám nagyobb, mint 10": (num> 5? "A szám nagyobb, mint 5": "A szám kisebb, mint 5");

azonban, kérjük, vegye figyelembe, hogy nem ajánlott ilyen mélyen beágyazott ternáris konstrukciókat használni a való világban. Ez azért van, mert kevésbé olvashatóvá és nehezen karbantarthatóvá teszi a kódot.

6. Következtetés

Ebben a gyors bemutatóban megismertük a Java háromszintű operátorát. Nem lehet mindegyiket kicserélni ha más hármas operátorral konstruálni. Bizonyos esetekben azonban remek eszköz, és kódunkat sokkal rövidebbé és olvashatóbbá teszi.

Szokás szerint a teljes forráskód elérhető a Githubon.