Java ternary operator
Literal meaning of ternary is three. As the name suggests, a ternary operator is an operator which has three entities or operands.
First of these three operands is a condition. This condition should return either true
or false
while second and third operands are also expressions.
The ternary operator returns one of these(either second or third operand) as the result based on whether the first operand(the condition or boolean expression) is true
or false
.
A ternary operator can be used as a replacement of simple if-else
statement having a single statement.
A ternary operator is a conditional operator having three operands and these operands are separated with ? and :
Syntax of a ternary operator is as follows
Operand 1 ? Operand 2 : Operand 3
Operand 1 is an expression which should return true
or false
.
If it evaluates to true
, then the ternary operator returns Operand 2(expression after ?).
If Operand 1 evaluates to false
, then the ternary operator returns Operand 3(expression after : (colon)).
Remember that all the three operands or expressions should return a value and there must be a variable at left hand side to collect or store this value. An example will make it more clear.
Below is an example program showing the usage of ternary operator in java.
public class TernaryExample { public static void main(String[] args) { String shorthand = "java"; String langOne = "java"; String langTwo = "javascript"; String language = "js".equals(shorthand) ? langTwo : langOne; System.out.println("Language is " + language); } }
Above program contains a ternary operator with the first expression as a condition which compares the value of shorthand variable with “js”.
Since the result is false
, the ternary operator returns the expression after : which is assigned to a variable.
The program prints below result.
Language is java
If the comparison would have resulted in true
, then the return value of the ternary operator would have been the expression after ?, that is, “javascript”.
Condition(or operand 1) of ternary operator need not be a simple condition.
It can be a complex condition with logical operators such as &&
or ||
. Example,
(shorthand != null && "js".equals(shorthand)) ? languageTwo : languageOne;
Java ternary Operator Vs if statement
As stated earlier, a ternary operator can be used as a replacement of an if-else
statement.
Using a ternary operator makes the code more readable, simpler and shorter, provided that it is not over used.
Thus, in the above example, the ternary operator when replaced with an if-else
will look like
String language = ""; if("js".equals(shorthand)) { language = "javascript"; } else { language = "java"; }
You can see the difference.
A ternary operator can not be replaced with an if-else
statement when either if
block or else
block has multiple statements to execute.
A ternary operator is only suitable when there is a single statement to execute or when a choice is to be made out of two.
Using a ternary operator inside another ternary operator is called nesting of ternary operators.
Inner ternary operator is used in place of return values(that in, place of Operands 2 or 3 or both) of the outer ternary operator.
Example,
public class TernaryExample { public static void main(String[] args) { int number = 50; String size = number > 30 ? number > 60 ? "Biggest" : "Bigger" :"Big"; System.out.println("Number is " + size); // result will be "Bigger } }
Above example has a ternary operator with the first operand as a condition that compares a number with 30.
If it is greater, then the control will move to the inner ternary operator(that is Operand 2) which compares the number with 60.
This is the condition of the inner ternary operator.
If the condition of the inner ternary operator is true
, then the result will be “Biggest” else “Bigger”.
If the condition of the outer ternary operator is false
, then the inner ternary operator will never be executed and the result will be “Big”.
Nested ternary operator in the above example when converted to an if-else
block will look as below.
String size = ""; if(number > 30) { if(number > 60) { size = "Biggest"; } else { size = "Bigger"; } } else { size = "Big"; }
A nested ternary operator can also be enclosed between parenthesis to enhance readability.
Thus, the ternary operator used in the above example could also be written as
String size = number > 30 ? (number > 60 ? "Biggest" : "Bigger") :"Big";
That is all on this article on ternary operators in java. Hit clap below if you liked it.