第三章 选择语句
3.1 比较运算符
- 大于 >
- 大于等于 >=
- 小于 <
- 小于等于 <=
- 等于 ==
- 不等于 !=
比较运算符结果是布尔值
3.2逻辑运算符
- 单与 &
- 双与 && 有假则假 同真则真
- 或 |
- 双或 || 有真则真 同假则假
- 非 !
- 异或 ^
逻辑运算符主要计算布尔值之间的逻辑
3.3 if 语句
-
单if
...A if(条件){ 如果条件为真时,执行语句B } ...C
条件为真时: A->B->C
条件为假时: A->C
-
if-else分支
...A if(条件){ 如果条件为真时,执行的语句B }else{ 如果条件为假时,执行的语句C } ...D
条件为真时:A->B->D
条件为假时: A->C->D
-
多if-else嵌套
...A if(条件2){ 条件2为真...B1 }else{ 条件2为假...B2 } ...B3 }else{ 条件1为假...C } ...D
条件1为真且条件2为真: A->B->B1->B3->D
条件1为真且条件2为假: A->B->B2->B3->D
条件1为假 A->C->D
-
多if-else分支
...A if(条件1){ > < >= <= == != 条件1为真...B }else if(条件2){ 条件2为真...C }else if(条件3){ 条件3为真...D }else{ ... E } ...F
条件1为真:A->B->F
条件1为假,条件2位真:A->C->F
条件1为假,条件2位假,条件3为真:A->D->F
三者都为假:A->E->F
-
选择语句 switch
switch(变量){
case 选项1:
如果变量=选项1执行的语句
break;
case 选项2:
如果变量=选项2执行的语句
break;
…
default:
如果选项n中没有适合变量的值,则执行
break;
}
if与switch的区别:
if可以对区间值进行比较 也可以对固定值进行比较
switch只能对固定的一个值进行比较 推荐使用 -
示例:计算身体质量指数
代码如下:public static void main(String[] args){ Scanner scanner=new Scanner(System.in); //1.获取身高体重 System.out.print("Please enter your weight and hight:"); double weight=scanner.nextDouble; double hight=scanner.nextDouble; //2.BMI=体重/身高^2 double BMI=weight/hight/hight; //3.将BMI进行判断,输出相应的说明 if(BMI>=30.0){ System.out.println("过胖"); }else if(BMI>=25.0){ System.out.println("超重"); }else if(BMI>=18.5){ System.out.println("正常"); }else{ System.out.println("偏瘦"); } } }
3.4 switch语句
- switch
- 不带case的switch
3.5 条件表达式
- 布尔表达式(条件表达式)(三目运算)
数据类型 变量名=布尔表达式?常量值1:常量值2;
3.6 常见的错误和陷进
- 忘记必要的括号
- 在if行出现错误的分号
- 对布尔值的冗余测试
- 悬空else出现的歧义
- 两个浮点数值的相等测试
- 简化布尔变量赋值
- 避免不同情形中的重复代码
本章小结
1、Boolean类型变量可以存储值true或false.
2、关系操作符(<,<=,==,!=,>,>=)产生一个布尔值.
3、选择语句用于可选择的动作路径的编程。选择语句有一下几种类型:单分支if语句、双分支if-else语句、嵌套if语句、多分支if-else语句、switch语句和条件表达式.
4、各种if语句都是基于布尔值表达式来控制决定的。根据表达式的值是true或false,这些语句选择两种可能路径的一种.
5、布尔操作符&&、||、!和^对布尔值和布尔变量进行计算.
6、当对p1&&p2求值时,Java先求p1的值,如果p1为ture,再对p2求值;如果p1为false,就不再对p2求值。当对p1||p2求值时,Java先求p1的值,如果p1为false,再对p2求值;如果p1为true,就不再对p2求值。因此,&&也称为条件与操作符或短路与操作符,而||也称为条件或操作符或短路或操作符.
7、switch语句根据char,byte,short,int或者String类型的switch表达式来进行控制决定.
8、在switch语句中,关键字break是可选的,但它通常用在每个分支的结尾,以中止执行switch语句的剩余部分。如果没有出现break语句,则执行接下来的case语句.
9、表达式中的操作符按照括号、操作符优先级以及操作符结合规则所切丁的次序进行求值.
10、括号用于强制求值的顺序以任何顺序进行.
11、具有更高级优先权的操作符更早地进行操作。对于同样优先级的操作符,它们的结合规则确定操作的顺序.
12、除开赋值操作符的所有二元操作符都是左结合的,赋值操作符是右结合的.