条件运算符属于三目运算符,它的语法结构是:布尔表达式?表达式1:表达式2。求解关系表达式,根据关系表达式的布尔值决定取值:关系表达式的值为true时取表达式1的值;关系表达式的值为false时取表达式2的值。它的运行原理是这样的,先判断布尔表达式的结果是true还是false,如果是true,则选择表达式1的结果作为整个表达式的结果,反之则选择表达式2的结果作为整个表达式的结果。来看一段代码:
public class ConditionalOperatorTest01 {
public static void main(String[] args) {
//编译报错:这不是一个语句
//10;
boolean flag = true;
//编译报错:这不是一个语句
//flag ? 1 : 0;
//以上如果是一条完整的语句应该这样写
int k = flag ? 1 : 0;
System.out.println("k = " + k); //1
//三目运算符最经典的用法
boolean sex = true;
//当布尔变量sex为true则结果是'男',反之'女'
char gender = sex ? '男' : '女';
System.out.println("性别:" + gender); //男
sex = false;
gender = sex ? '男' : '女';
System.out.println("性别:" + gender); //女
//又如
int x = 100;
int y = 100;
System.out.println(x == y ? "x和y相等" : "x和y不相等");
}
}
实际上条件运算符和后期要学习的控制语句if可以达到同等效果。在实际开发中灵活运用条件运算符会让你的代码看起来更加简洁清凉,达到意想不到的效果。
1.条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。
2.JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。
3.结合性也是右结合性。
4.与C语言不同的是,JAVA中条件表达式的值必须参与运算。
以上程序中,1处错误是由于条件表达式的值没有参与运算,不能构成语句。3处(b < c ? a : c)先结合,再将这个值参与到另一个条件运算中去,是合法的,这也说明了条件运算符的右结合性。
public class Demo{
public static void main(String[] args){
int a = 10,b = 20,y;
a > b ? (y = a) : (y = b);//1,这样写是错误的
y = a > b ? a : b;//2,这样写是正确的
y = a < b ? b : b < c ? a : c;//3,这样写是正确的
}
}
实际上,我们只要掌握了三元运算符的用法,基本上条件运算符也是异曲同工,它们的用法有很多的相似之处,想深入学习的小伙伴可以在动力节点在线的视频课程中参考更多的Java条件运算符的应用实例,加深我们对Java条件运算符的理解。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54