Java >> Java tutorial >  >> Java

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.


Java tag