Ternær operatør i Java

1. Oversigt

Den ternære betingede operatør ?: giver os mulighed for at definere udtryk i Java. Det er en kondenseret form af hvis ellers sætning, der også returnerer en værdi.

I denne vejledning lærer vi, hvornår og hvordan man bruger en ternær konstruktion. Vi starter med at se på syntaksen efterfulgt af at udforske dens anvendelse.

2. Syntaks

Den ternære operatør ?: i Java er den eneste operatør, der accepterer tre operander:

boolsk udtryk? expression1: expression2

Den allerførste operand skal være en boolsk udtryk, den anden og den tredje operand kan være ethvert udtryk, der returnerer en værdi. Den ternære konstruktion vender tilbage udtryk1 som output, hvis den første operand evalueres til rigtigt, udtryk2 Ellers.

3. Eksempel på ternær operatør

Lad os overveje nedenstående hvis ellers konstruere:

int num = 8; Streng msg = ""; if (num> 10) {msg = "Antal er større end 10"; } ellers {msg = "Antal er mindre end eller lig med 10"; }

I ovenstående kode har vi tildelt en værdi msg baseret på den betingede vurdering af antal. Vi kan gøre denne kode mere læsbar og sikker ved let at erstatte hvis ellers udsagn med en ternær konstruktion:

final String msg = num> 10? "Tal er større end 10": "Nummer er mindre end eller lig med 10";

4. Ekspression Evaluering

Når du bruger en Java-ternær konstruktion, er kun et af højre sideudtryk, dvs. en af ​​dem udtryk1 eller udtryk2 evalueres ved kørsel.

Vi kan teste det ved at skrive en simpel JUnit test sag:

@Test offentlig ugyldig nårConditionIsTrue_thenOnlyFirstExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int resultat = 12> 10? ++ eksp1: ++ eksp2; assertThat (exp1) .isEqualTo (1); assertThat (exp2) .isEqualTo (0); assertThat (resultat) .isEqualTo (1); }

Vores boolsk udtryk 12 > 10 evaluerer altid til rigtigt, så værdien af eksp2 forblev som det er. Lad os ligeledes overveje, hvad der sker for en falsk tilstand:

@Test offentlig ugyldig nårConditionIsFalse_thenOnlySecondExpressionIsEvaluated () {int exp1 = 0, exp2 = 0; int resultat = 8> 10? ++ eksp1: ++ eksp2; assertThat (exp1) .isEqualTo (0); assertThat (exp2) .isEqualTo (1); assertThat (resultat) .isEqualTo (1); }

Værdien af eksp1 forblev uberørt, og værdien af eksp2 blev forøget med 1.

5. Nestende ternær operatør

Det er muligt for os at rede vores ternære operatør til et hvilket som helst antal niveauer efter eget valg. Så konstruktionen:

Streng msg = num> 10? "Nummer er større end 10": num> 5? "Antal er større end 5": "Nummer er mindre end lig med 5";

er gyldig i Java. For at forbedre læsbarheden af ​​ovenstående kode kan vi bruge seler (), hvor det er nødvendigt:

Streng msg = num> 10? "Antal er større end 10": (num> 5? "Antal er større end 5": "Nummer er mindre end lig med 5");

Imidlertid, bemærk, at det ikke anbefales at bruge så dybt indlejrede ternære konstruktioner i den virkelige verden. Dette er, da det gør koden mindre læsbar og vanskelig at vedligeholde.

6. Konklusion

I denne hurtige vejledning lærte vi om den ternære operatør i Java. Det er ikke muligt at udskifte alle hvis ellers konstruere med en ternær operatør. Det er dog et godt værktøj i nogle tilfælde og gør vores kode meget kortere og læsbar.

Som normalt er hele kildekoden tilgængelig på Github.


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