Ternárny operátor v Jave

1. Prehľad

Ternárny podmienený operátor ?: umožňuje nám definovať výrazy v Jave. Je to zhustená forma keby-inak príkaz, ktorý vráti aj hodnotu.

V tomto tutoriále sa dozvieme, kedy a ako používať ternárnu konštrukciu. Začneme tým, že sa pozrieme na jeho syntax, a potom preskúmame jeho použitie.

2. Syntax

Ternárny operátor ?: v Jave je jediný operátor, ktorý akceptuje tri operandy:

booleanExpression? výraz1: výraz2

Úplne prvým operandom musí byť a boolovský výraz, druhý a tretí operand môžu byť akýkoľvek výraz, ktorý vracia určitú hodnotu. Ternárny konštrukt sa vráti výraz1 ako výstup, ak prvý operand vyhodnotí ako pravda, výraz2 inak.

3. Príklad ternárneho operátora

Zvážme nasledujúce keby-inak konštruovať:

int num = 8; Reťazec msg = ""; if (num> 10) {msg = "Číslo je väčšie ako 10"; } else {msg = "Počet je menší alebo rovný 10"; }

Vo vyššie uvedenom kóde sme priradili hodnotu správa na základe podmieneného vyhodnotenia číslo. Tento kód môžeme zvýšiť čitateľnosťou a bezpečnosťou jednoduchou výmenou súboru keby-inak vyhlásenie s ternárnym konštruktom:

konečná správa reťazca = počet> 10? „Number is greater than 10“: „Number is less than or equal to 10“;

4. Vyhodnotenie výrazu

Pri použití ternárneho konštruktu Java iba jeden z výrazov na pravej strane, t. J. Buď výraz1 alebo výraz2 sa vyhodnocuje za behu.

Môžeme to vyskúšať jednoduchým napísaním JUnit testovacia situácia:

@Test public void whenConditionIsTrue_thenOnlyFirstExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int vysledok = 12> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (1); assertThat (exp2) .isEqualTo (0); assertThat (výsledok) .isEqualTo (1); }

Náš boolovský výraz 12 > 10 vždy hodnotí na pravda, takže hodnota exp2 zostal taký, aký je. Podobne zvážime, čo sa stane pre a nepravdivé stav:

@Test public void whenConditionIsFalse_thenOnlySecondExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int vysledok = 8> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (0); assertThat (exp2) .isEqualTo (1); assertThat (výsledok) .isEqualTo (1); }

Hodnota exp1 zostala nedotknutá a hodnota exp2 bol zvýšený o 1.

5. Hniezdiaci ternárny operátor

Je možné, aby sme nášho ternárneho operátora vnorili do ľubovoľného počtu úrovní podľa nášho výberu. Takže konštrukt:

Reťazcová správa = počet> 10? „Číslo je väčšie ako 10“: počet> 5? „Number is greater than 5“: „Číslo je menšie ako 5“;

je platný v Jave. Na zlepšenie čitateľnosti vyššie uvedeného kódu môžeme použiť zložené zátvorky (), kedykoľvek je to potrebné:

Reťazcová správa = počet> 10? „Číslo je väčšie ako 10“: (počet> 5? „Číslo je väčšie ako 5“: „Číslo je menšie ako 5“);

Avšak, Vezmite prosím na vedomie, že sa neodporúča používať také hlboko vnorené ternárne konštrukty v skutočnom svete. Je to tak kvôli tomu, že je kód menej čitateľný a ťažko sa udržuje.

6. Záver

V tomto rýchlom výučbe sme sa dozvedeli o ternárnom operátore v Jave. Nie je možné vymeniť všetky keby-inak konštruovať s ternárnym operátorom. Je to však v niektorých prípadoch vynikajúci nástroj, vďaka ktorému je náš kód oveľa kratší a čitateľnejší.

Celý zdrojový kód je ako obvykle k dispozícii na serveri Github.