三元运算符是Java编程语言中使用的条件运算符。表示为 ?:
这对于Java语法来说非常奇怪。三元运算符为不同的条件情况提供了一些快捷方式和优雅的解决方案。
什么是三元运算符?
三元运算符提供if-else语句的压缩形式。三元运算符可用于选择条件,只有两个选择。对于多选,选择是否可以使用else或switch case。
语法
三元运算符的语法有点不同。
CONDITION? EXPRESSION1 : EXPRESSION2
- `CONDITION是一个表达式,它只返回一个布尔值,如false或true。它用于计算给定的表达式,并根据结果执行表达式1或表达式2。如果计算的表达式为true,则将执行表达式1如果计算的表达式为false,则将执行表达式2。
- `EXPRESSION1`是一个表达式,如果条件返回true,它将在其中执行。
- `EXPRESSION2`是一个表达式,如果条件返回false,它将在其中执行。
三元运算符示例
我们将从一个简单的三元运算符示例开始。我们将检查布尔表达式 number < 5
如果是真的,我们会打印出来 number variable is lower than 5
如果是假的,我们会打印出来 number variable is higher than 5
.
public class Ternary_Operator { public static void main(String[] args) { int number = 3; String result1 = number < 5 ? "number variable is lower than 5" : "number variable is higher than 5"; System.out.println(result1); //Output will be "number variable is lower than 5" number = 8; String result2 = number < 5 ? "number variable is lower than 5" : "number variable is higher than 5"; System.out.println(result2); //Output will be "number variable is higher than 5" }}
在本例中 result1
将 number variable is lower than 5
因为 number > 5
将被评估为 true
其中三元表达式将返回第一个表达式。
相关文章: Linux Bash If Else条件教程及示例
这个 result2
将 number variable is higher than 5
因为 number < 5
将被评估为 false
因为 8<5
将返回false。这将导致三元表达式返回第二个表达式。
嵌套或链式三元运算符示例
多个三元运算符可以嵌套或链接在一起。即使可以嵌套多个三元运算符,也不建议这样做,因为这样会使读取代码更困难,更容易出错。下面是一个简单的嵌套三值运算符示例。
public class Ternary_Operator { public static void main(String[] args) { int number = 8; String result = number > 10 ? "Number is greater than 10" : (number > 5 ? "Number is greater than 5":"Number is less than 5"); System.out.println(result); }}
三值运算符空检查
我们可以很容易地使用三元运算符进行空值检查。在调用方法之前进行检查时,这很有用。
public class Ternary_Operator { public static void main(String[] args) { Object myobject; String value = myobject!= null ? object.getValue():null; }}
此代码将检查myobject是否为null。如果myobject不为空,则 getValue()
函数,返回值设置为 value
. 但是如果 myobject
为空 value
将设置为 null
. 在这种情况下,我们可以看到 myobject
为null且 null
值将设置为 value
.
下面的代码相当于前面的三元操作。
public class Ternary_Operator { public static void main(String[] args) { String value = null; if(object != null) { value = object.getValue(); } }}
作为最大函数的三元算子
作为另一个例子,三元运算符可以像max()函数一样使用,它将返回给定两个值的最大值。
public class Ternary_Operator { public static void main(String[] args) { int value1 = 10; int value2 = 20; int max = value1 >= value2 ? value1 : value2; }}
作为最小函数的三元算子
像max()函数一样,三元运算符可以用作 min()
返回或选择两个给定值中较低值的函数。如果两个值相同 value1
将返回,因为两个值相同。
public class Ternary_Operator { public static void main(String[] args) { int value1 = 10; int value2 = 20; int max = value1 <= value2 ? value1 : value2; }}
作为abs函数的三元算子
三元运算符的另一个有趣用法是将其用作 abs()
函数,返回给定值的绝对值,该值可以是正值或负值。
public class Ternary_Operator { public static void main(String[] args) { int value = -5; int abs_value = value >= 0 ? value : -value; }}