前言
在开发过程中不管是 三元运算符 还是其他语句都会经常用到布尔表达式,所以在学习 三元运算符 之前需要先明白什么是布尔表达式?
一、布尔表达式
布尔表达式只有2种结果:true / false
看看以下简单示例结果是否与你想的结果一致:
布尔表达式 | 中文 | 结果 |
---|---|---|
10 == 10 | 10等于10吗? | true |
10 % 2 == 0 | 10对2取余等于0吗?10是偶数,对2取余当然等于0 | true |
10 % 2 != 0 | 10对2取余不等于0吗?10是偶数,对2取余当然等于0,怎么可能不等于0 | false |
10 > 10 | 10大于10吗? | false |
10 < 10 | 10小于10吗? | false |
10 != 10 | 10不等于10吗? | false |
10 == 20 | 10等于20吗? | false |
10 > 20 | 10大于20吗? | false |
10 < 20 | 10小于20吗? | true |
10 != 20 | 10不等于20吗? | true |
二、三元运算符
三元运算符可以简单理解为if语句的简化版
对于三元运算符可以简单理解为:
code | 中文 |
---|---|
? | 吗? |
: | 否则 |
三、语法
布尔表达式 ? 表达式1 : 表达式2 ;
执行流程:
1、判断布尔表达式结果
2、为true,执行表达式1
3、为false,执行表达式2
四、示例
/* 以下代码的运行结果为:这个数是偶数 */
int num = 20;
// if(num % 2 == 0){ // 如果num对2取余等于0
// System.out.println("这个数是偶数");
// }else{ // 否则
// System.out.println("这个数是奇数");
// }
/* 简化为以下三元运算 */
String flag = num % 2 == 0 ? "这个数是偶数" : "这个数是奇数";
System.out.println("flag = " + flag);
/* 以下代码的运行结果为:成绩不合法 */
int result = 121;
// if (result >= 0 && result <= 120){ // 如果成绩大于等于0 并且 成绩小于等于120
// System.out.println("成绩合法");
// }else if(result < 0 || result > 120){ // 否则,如果成绩小于0 或者 成绩大于120
// System.out.println("成绩不合法");
// }
/* 简化为以下三元运算 */
String flag = result >= 0 && result <= 120 ? "成绩合法" : result < 0 || result > 120 ? "成绩不合法" : "";
System.out.println("flag = " + flag);
/* 以下代码的运行结果为:体重正常 */
int weight = 100;
// if(weight >= 120){ // 如果体重大于等于120
// System.out.println("体重偏重");
// }else if(weight <= 90){ // 否则,如果体重小于等于90
// System.out.println("体重偏轻");
// }else { // 否则
// System.out.println("体重正常");
// }
/* 简化为以下三元运算 */
String flag = weight >= 120 ? "体重偏重" : weight <= 90 ? "体重偏轻" : "体重正常";
System.out.println("flag = " + flag);
/*
* 以下代码的运行结果为:及格
* 执行流程:
* 1、先判断布尔表达式 if (result < 0 || result > 120) 结果为false,继续往下执行
* 2、再判断 else if(result >= 60) 结果为true,打印及格,if语句结束,不再继续往下执行
*/
int result = 90;
// if (result < 0 || result > 120){
// System.out.println("成绩不合法");
// }else if(result >= 60){
// System.out.println("及格");
// }else if(result >= 70){
// System.out.println("良好");
// }else if(result >= 80){
// System.out.println("优秀");
// }else if(result >= 90){
// System.out.println("十分优秀");
// }
/* 简化为以下三元运算 */
String flag = result < 0 || result > 120 ? "成绩不合法" : result >= 60 ? "及格" : result >= 70 ? "良好" : result >= 80 ? "优秀" : result >= 90 ? "十分优秀" : "";
System.out.println("flag = " + flag);
五、示例翻译
// num对2取余等于0 吗? 布尔表达式为true执行"这个数是偶数" 否则 布尔表达式为false执行"这个数是奇数"
String flag = num % 2 == 0 ? "这个数是偶数" : "这个数是奇数";
// result大于等于0 并且 result小于等于120 吗?布尔表达式为true执行"成绩合法" 否则 result小于0 或者 result大于120 吗? 布尔表达式为true执行"成绩不合法" 否则 执行空字符串""
String flag = result >= 0 && result <= 120 ? "成绩合法" : result < 0 || result > 120 ? "成绩不合法" : "";
// weight大于等于120 吗? 布尔表达式为true执行"体重偏重" 否则 weight小于等于90 吗? 布尔表达式为true执行"体重偏轻" 否则 执行"体重正常"
String flag = weight >= 120 ? "体重偏重" : weight <= 90 ? "体重偏轻" : "体重正常";
// result小于0 或者 result大于120 吗? 布尔表达式为true执行"成绩不合法" 否则 result大于等于60 吗? 布尔表达式为true执行"及格" 否则 result大于等于70 吗? 布尔表达式为true执行"良好" 否则 result大于等于80 吗? 布尔表达式为true执行"优秀" 否则 result大于等于90 吗? 布尔表达式为true执行"十分优秀" 否则 执行空字符串""
String flag = result < 0 || result > 120 ? "成绩不合法" : result >= 60 ? "及格" : result >= 70 ? "良好" : result >= 80 ? "优秀" : result >= 90 ? "十分优秀" : "";