Java Ternary Operator med eksempler
Den ternære Java-operator giver dig mulighed for at bygge en enkelt-linje if-sætning. Sand eller falsk kan være resultatet af en ternær operator. Uanset om sætningen evalueres til sand eller falsk, returnerer den et bestemt resultat.
Operatører er de grundlæggende byggesten i alle programmeringssprog. Java har også en række operatører, der kan bruges til at udføre forskellige beregninger og funktioner, uanset om de er logiske, aritmetiske, relationelle eller på anden måde. De er kategoriseret efter de funktioner, de tilbyder. Her er flere eksempler:
- Aritmetiske operatorer
- Unære operatører
- Ternær operatør
- Bitvise operatører
- Skiftoperatører
- Opgaveoperatør
- Relationelle operatører
- Logiske operatører
Java Ternary Operator med eksempler
Denne artikel dækker alt, hvad der er at vide om aritmetiske operatorer.
Der er tre dele til definitionen af ternær. Tre operander udgør den ternære operator (?:). Booleske udtryk evalueres med det. Operatøren vælger, hvilken værdi der skal tildeles til variablen. Det er den eneste betingede operator, der tager tre argumenter. Det kan træde i stedet for et hvis-else-udtryk. Det forenkler, forenkler og forenkler koden. En ternær operator kan ikke bruges til at erstatte nogen kode, der bruger en if-else-sætning.
Ternær operatør
Den eneste betingede operator i Java, der tager tre operander, er den ternære operator. Det er en one-liner-erstatning for if-then-else-sætningen, der almindeligvis bruges i Java. Vi kan bruge den ternære operator i stedet for if-else-betingelser eller indlejrede ternære operatorer til at bytte betingelser.
Selvom den betingede operator følger samme algoritme som if-else-sætningen, fylder den mindre og hjælper med den kortest mulige skrivning af if-else-sætninger.
Den ternære operatorsyntaks er som følger:
resultant_variable = First_Expression ? Second_Expression: Third_Expression
Dets udtryk fungerer på samme måde som if-else-sætningen, idet Second_Expression udføres, hvis First_Expression er sandt, og Third_Expression udføres, hvis First_Expression er falsk.
if(First_Expression) { resultant_variable = Second_Expression; } else { resultant_variable = Third_Expression; }
Nedenfor er en simpel demonstration af Javas ternære operator.
varNumOne = 25; varNumTwo = 35; final_result=(varNumOne>varNumTwo) ? (varNumOne+varNumTwo):(varNumOne-varNumTwo) Since num1<varNumTwo, // performing the second operation final_result = varNumOne-varNumTwo = -10
Hvornår skal den ternære operatør bruges?
Den ternære operator i Java kan bruges til at erstatte nogle if…else-sætninger. For eksempel kan følgende kode ændres som følger.
class codeIfElse { public static void main(String[] args) { // creation of the variable int gradeVar = 68; if( gradeVar > 0) { System.out.println("Congratulations. You have a Positive Trend"); } else { System.out.println("Sorry. You have a Negative Trend"); } } }
med
class codeTernary { public static void main(String[] args) { // creation of the variable int gradeVar = 68; String resultantFeedback = ( gradeVar > 0) ? "Congratulations. You have a Positive Trend" : "Sorry. You have a Negative Trend"; System.out.println(resultantFeedback); } }
Begge programmer giver det samme resultat i dette tilfælde. På den anden side gør den ternære operatør vores kode mere læselig og ryddelig. Bemærk, at den ternære operator kun skal bruges, hvis den resulterende sætning er kort.
Indlejring af de ternære operatører i Java
En ternær operator kan også bruges i en anden ternær operator. I Java er det kendt som den indlejrede ternære operator. Her er et program, der bruger den indlejrede ternære operator til at finde det største af tre tal.
class codeNestedTernary { public static void main(String[] args) { // Here's the declaration of variables int numVarOne = 7, numVarTwo = 13, numVarThree = -8; //To find the greatest number, use a nested ternary operator. int varLargestNum = ( numVarOne >= numVarTwo) ? (( numVarOne >= numVarThree) ? numVarOne : numVarThree) : (( numVarTwo >= numVarThree) ? numVarTwo : numVarThree); System.out.println(" The greatest number among the three is: " + varLargestNum); } }
Bemærk, hvordan den ternære operator bruges i det foregående eksempel.
( numVarOne >= numVarTwo) ? (( numVarOne >= numVarThree) ? numVarOne : numVarThree) : (( numVarTwo >= numVarThree) ? numVarTwo : numVarThree);
Her,
( numVarOne>=numVarTwo) er den indledende testbetingelse, der bestemmer, om numVarOne er større end numVarTwo. Hvis startbetingelsen er korrekt, udføres den anden testbetingelse (numVarOne>=numVarThree). Yderligere, når startbetingelsen er falsk, køres den tredje testbetingelse (numVarTwo>=numVarThree). Bemærk, at indlejrede ternære operatorer ikke anbefales. Dette er fordi det komplicerer vores kodning.
Evaluering af udtryk
Kun ét af udtryk på højre side, expression1 eller expression2, evalueres under kørsel, når der anvendes en ternær Java-konstruktion. Et simpelt JUnit-testtilfælde kan bruges til at bekræfte dette:
@Test public void codeWhenConditionIsTrue() { int varExp1 = 0, varExp2 = 0; int ternaryResult = 23 > 21 ? ++ varExp1 : ++varExp2; assertThat(varExp1).isEqualTo(1); assertThat(varExp2).isEqualTo(0); assertThat(ternaryResult).isEqualTo(1); }
Fordi vores boolske sætning 23> 21 altid er sand, forblev værdien af varExp2 uændret. Overvej, hvad der sker i tilfælde af en falsk tilstand:
@Test public void codeWhenConditionIsFalse() { int varExp1 = 0, varExp2 = 0; int result = 19 > 21 ? ++ varExp1 : ++varExp2; assertThat(varExp1).isEqualTo(0); assertThat(varExp2).isEqualTo(1); assertThat(result).isEqualTo(1); }
Værdien af varExp1 blev ikke ændret, men værdien af varExp2 blev hævet med én.
Nul-tjek ved hjælp af ternær operatør
Før du forsøger at påkalde et objekts metode, kan du bruge den ternære Java-operator som en stenografi for nul-tjek. Overvej følgende scenarie:
String varResult = object != null ? object.getValue() : null; This code is the very equivalent of the one above only that the prior is much shorter than this one: String varResult = null; if(object != null) { varResult = object.getValue(); }
Begge disse kodeeksempler undgår, som du kan se, at kalde objekter. Hvis objektreferencen er null, kaldes object.getValue(), selvom den første kodeeksempel er lidt kortere og mere elegant.
Maksimal funktion ved hjælp af ternær operatør
Ved at bruge en ternær Java-operator kan du opnå den samme funktion som Java Math max()-funktionen. Her er et eksempel på brug af en ternær Java-operator til at opnå Math.max()-funktionaliteten:
int varNumOne = 23; int varNumTwo = 38; int varMaxResult = varNumOne >= varNumTwo ? varNumOne : varNumTwo;
Vær opmærksom på, hvordan de ternære operatorbetingelser kontrollerer, om varNumOne er større end eller lig med varNumTwo. Den ternære operator returnerer værdien varNumOne, hvis den er sand. Ellers returneres varNumTwo-værdien.
Min funktion ved hjælp af ternær operatør
For at få det samme resultat som Java Math min()-funktionen skal du bruge den ternære Java-operator. Her er et eksempel på brug af en ternær Java-operator til at opnå Math.min()-funktionaliteten:
int varNumOne = 23; int varNumTwo = 38; int varMaxResult = varNumOne <= varNumTwo ? varNumOne : varNumTwo;
Bemærk, hvordan de ternære operatorbetingelser kontrollerer, om varNumOne er mindre end eller lig med varNumTwo. Den ternære operator returnerer værdien varNumOne, hvis den er sand. Ellers returneres varNumTwo-værdien.
Abs-funktion ved hjælp af ternær operatør
Abs-funktionseffekten kan opnås gennem Javas ternære operator som med Java Math abs()-metoden. Her er et eksempel på brug af en ternær Java-operator til at opnå Math.abs()-funktionaliteten:
int varNumOne = 23; int varAbsoluteResult = varNumOne >= 0? varNumOne : -varNumOne;
Vær opmærksom på, hvordan den ternære operator undersøger, om varNumOne er større end eller lig med 0.
Den ternære operator returnerer værdien varNumOne, hvis den er sand. Ellers returnerer den -varNumOne, som negerer en negativ værdi og gør den positiv.
Eksempel:Nesting ternær operatør
Det er muligt at indlejre vores ternære operatør på et hvilket som helst antal niveauer, vi vælger. I Java er denne konstruktion gyldig:
String ternaryResult = varNum > 38 ? "Number is greater than 38" : varNum > 8 ? "Number is greater than 8" : "Number is less than equal to 8"; We can use brackets () wherever appropriate to improve the readability of the above code: String ternaryResult = varNum > 38 ? "Number is greater than 38" : ( varNum > 8 ? "Number is greater than 8" : "Number is less than equal to 8");
Vær venligst opmærksom på, at sådanne dybt indlejrede ternære strukturer ikke anbefales i den faktiske verden. Dette skyldes, at det gør koden mindre læselig og vedligeholdelig.
Eksempel:Program til at finde det største blandt to tal ved hjælp af Javas ternære operator
import java.io.*; class CodeTernary { public static void main(String[] args) { // The declaration of variables int varNumOne = 15, varNumTwo = 98, varNumMax; System.out.println("The First num is: " + varNumOne); System.out.println("The Second num is: " + varNumTwo); // Largest value between varNumOne and varNumTwo varNumMax = ( varNumOne > varNumTwo) ? varNumOne : varNumTwo; // Printing the largest number between the two System.out.println("Maximum is = " + varNumMax); } }
Eksempel:Kode til illustration af Javas ternære operator
import java.io.*; class CodeTernary { public static void main(String[] args) { // The declaration of variables int varNumOne = 18, varNumTwo = 65, varNumRes; System.out.println("First num: " + varNumOne); System.out.println("Second num: " + n2); // Executing the ternary operation in Java varNumRes = ( varNumOne > varNumTwo) ? ( varNumOne + varNumTwo) : ( varNumOne - varNumTwo); // Print the largest number System.out.println("The resultant values is = " + varNumRes); } }
Eksempel:Javas ternære operatør
import java.util.Scanner; class CodeTernary { public static void main(String[] args) { //solicit user for input Scanner codeInput = new Scanner(System.in); System.out.println("Please input your end of semester Score: "); double studentsScore = codeInput.nextDouble(); // ternary operator is responsible for checking if // studentsScore is higher than 70 String resultScore = ( studentsScore > 70) ? "Pass. Promoted to Level II" : "Fail. Cannot be promoted to Level II"; System.out.println("Your end of year evaluation is" + resultScore ); codeInput.close(); } }
Eksempel:Ternary Operator-demo i Java
public class codeTernaryOperator { public static void main(String args[]) { int xVar, yVar; xVar = 43; yVar = (xVar == 1) ? 98: 108; System.out.println("The Value of yVar is: " + yVar); yVar = (xVar == 43) ? 98: 108; System.out.println("The Value of yVar is: " + yVar); } }
Eksempel:Bestem det største antal ved hjælp af en ternær operatør i Java
public class codeLargestNumber { public static void main(String args[]) { int xVar=169; int yVar=189; int zVar=179; int varLargestNum= (xVar > yVar) ? (xVar > zVar ? xVar : zVar) : (yVar > zVar ? yVar : zVar); System.out.println("The greaterst numbers is: "+varLargestNum); } }
Konklusion
Ved hjælp af eksempler har du lært om den ternære operator, og hvordan du bruger den i Java i denne tutorial. I nogle tilfælde kan en ternær operator bruges i stedet for en if…else-sætning i Java. Vi brugte også et eksempel til at vise Java if…else-sætningen, før vi dykkede ind i den ternære operator. Derudover evalueres testbetingelsen af en ternær operator, som derefter udfører en kodeblok baseret på resultatet.