Ternaire operator in Java

1. Overzicht

De ternaire voorwaardelijke operator ?: stelt ons in staat om uitdrukkingen in Java te definiëren. Het is een verkorte vorm van de als-anders instructie die ook een waarde retourneert.

In deze tutorial leren we wanneer en hoe we een ternair construct kunnen gebruiken. We beginnen met het bekijken van de syntaxis, gevolgd door het gebruik ervan.

2. Syntaxis

De ternaire operator ?: in Java is de enige operator die drie operanden accepteert:

booleanExpression? expression1: expression2

De allereerste operand moet een boolean expressie, kunnen de tweede en derde operanden elke expressie zijn die een bepaalde waarde retourneert. Het ternaire construct keert terug uitdrukking1 als een uitvoer als de eerste operand evalueert naar waar, expressie2 anders.

3. Voorbeeld van een ternaire operator

Laten we eens kijken naar het onderstaande als-anders construeren:

int num = 8; String msg = ""; if (num> 10) {msg = "Getal is groter dan 10"; } else {msg = "Getal is kleiner dan of gelijk aan 10"; }

In bovenstaande code hebben we een waarde toegekend aan msg gebaseerd op de voorwaardelijke evaluatie van num. We kunnen deze code leesbaarder en veiliger maken door de als-anders statement met een ternair construct:

laatste String msg = num> 10? "Number is groter dan 10": "Number is kleiner dan of gelijk aan 10";

4. Expressie-evaluatie

Bij gebruik van een ternair Java-construct, slechts een van de uitdrukkingen aan de rechterkant, d.w.z. ofwel uitdrukking1 of expressie2 wordt tijdens runtime geëvalueerd.

We kunnen dat testen door een simpel te schrijven JUnit testgeval:

@ Test openbare ongeldig whenConditionIsTrue_thenOnlyFirstExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int resultaat = 12> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (1); assertThat (exp2) .isEqualTo (0); assertThat (resultaat) .isEqualTo (1); }

Onze boolean uitdrukking 12 > 10 evalueert altijd naar waar, dus de waarde van exp2 bleef zoals het is. Laten we ook eens kijken wat er gebeurt voor een false staat:

@ Test openbare ongeldig whenConditionIsFalse_thenOnlySecondExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int resultaat = 8> 10? ++ exp1: ++ exp2; assertThat (exp1) .isEqualTo (0); assertThat (exp2) .isEqualTo (1); assertThat (resultaat) .isEqualTo (1); }

De waarde van exp1 bleef onaangetast, en de waarde van exp2 werd verhoogd met 1.

5. Nestelende ternaire operator

Het is voor ons mogelijk om onze ternaire operator op een willekeurig aantal niveaus naar keuze te nestelen. Dus de constructie:

String msg = num> 10? "Getal is groter dan 10": num> 5? "Number is groter dan 5": "Number is kleiner dan gelijk aan 5";

is geldig in Java. Om de leesbaarheid van bovenstaande code te verbeteren, kunnen we accolades gebruiken (), waar nodig:

String msg = num> 10? "Getal is groter dan 10": (num> 5? "Getal is groter dan 5": "Getal is kleiner dan gelijk aan 5");

Echter, Houd er rekening mee dat het niet wordt aanbevolen om zulke diep geneste ternaire constructies in de echte wereld te gebruiken. Dit is zo omdat het de code minder leesbaar en moeilijk te onderhouden maakt.

6. Conclusie

In deze korte tutorial hebben we geleerd over de ternaire operator in Java. Het is niet mogelijk om elke als-anders construct met een ternaire operator. Het is echter in sommige gevallen een geweldig hulpmiddel en maakt onze code veel korter en leesbaarder.

Zoals gewoonlijk is de volledige broncode beschikbaar op Github.


$config[zx-auto] not found$config[zx-overlay] not found