3.7.7 三目运算符

3.7.7 三目运算符

三目运算符只有一个:? :,三目运算符的语法格式如下:

1
(expression) ? if-true-statement : if-false-statement;

三目运算符的规则是:先对逻辑表达式expression求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数的值

看如下代码

1
2
String str = 5 > 3 ? "5大于3" : "5不大于3";
System.out.println(str); // 输出"5大于3"

大部分时候,三目运算符都是作为if else的精简写法。因此,如果将上面代码换成if else的写法,则代码如下:

1
2
3
4
5
6
String str2 = null;
if (5 > 3) {
str2 = "5大于3";
} else {
str2 = "5不大于3";
}

三目运算和if else的区别

这两种代码写法的效果是完全相同的。三目运算符和if else写法的区别在于:if后的代码块可以有多个语句,但三目运算符是不支持多个语句的
三目运算符可以嵌套,嵌套后的三目运算符可以处理更复杂的情况,如下程序所示:

1
2
3
4
int a = 11;
int b = 12;
// 三目运算符支持嵌套
System.out.println(a > b ? "a大于b" : (a < b ? "a小于b" : "a等于b"));

上面程序中的输出语句是一个由三目运算符构成的表达式,这个表达式本身又被嵌套在三目运算符中。通过使用嵌套的三目运算符,即可让三目运算符处理更复杂的情况。