提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
程序都是按照代码语句,一句一句按照顺序执行下去的,但是有时候我们需要执行一些判断操作,设定条件,当条件满足,就执行某些的语句,不满足的时候执行另一些语句。
这里记录if-else和switch-case选择结构。
一、if条件语句
语法格式:
if( 布尔表达式 ){
语句1;
}
当布尔表达式为 true 时,执行语句1
当布尔表达式为 false 时,跳过 { } 内的语句
if(10 > 5){ // true
System.out.println("Hello"); //hello
}
注意 if()后面的{}括号可以省略,但是这样的话,当布尔表达式满足条件只会执行 if();后面紧跟的第一条语句。如果不满足,就跳过if()后面紧跟的第一条语句,继续往下执行。但是不容易阅读,而且可能干扰程序的逻辑执行,实际开发不这样写
public static void main(String[] args) {
if (10 < 5)
System.out.println("heiheiehi");
System.out.println("我");
}
二、if-else语句
语法格式:
if( 布尔表达式1){
语句块1;
}else {
语句块2;
}
执行流程:先判断布尔表达式1的值,为true就执行语句块1;若为false就执行语句块2.
public static void main(String[] args) {
int a = 10;
int b = 5;
if (a > b) {
System.out.println("a > b");
} else {
System.out.println("a < b");
}
}
注意:如果 if()括号里面的是boolean变量在运算,一定要注意 = 和 == 的区别
boolean a = true;
boolean b = false;
if (a == b) {
System.out.println("==是比较运算符");
} else {
System.out.println("两者不相等"); //打印输出这一句
}
如果if()括号里面的布尔变量使用 = ,就会扰乱判断逻辑,影响最后的输出结果。
public static void main(String[] args) {
boolean a = true;
boolean b = false;
if (b = a) {
System.out.println("=是赋值运算符");
} else {
System.out.println("两者不相等");
}
}
三、if-else-if…语句
多层if-else-if语句,一定要搞清楚他的执行流程,每一层布尔表达式的条件对下一层的影响。
if-else-if 下一层的判断条件是隐含了满足上一层判断条件为false的情况。
public static void main(String[] args) {
int score = 79;
if (score >= 90 && score <= 100) {
System.out.println("优秀");
} else if (score >= 80) { //隐含了score不可能>=90了
System.out.println("良好");
} else if (score >= 70) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
四、switch多分支语句
语法格式:
switch(用于判断的参数){
case 常量表达式1 :
语句1;
break;
case 常量表达式2 :
语句2;
break;
case 常量表达式n :
语句n;
break;
default :
语句1;
break;
}
执行流程:
举例代码:
需求1:给一个数字编号,判断是周几
public static void main(String[] args) {
int week = 5;
switch (week) {
case 1:
System.out.println("周一");
break;
case 2:
System.out.println("周二");
break;
case 3:
System.out.println("周三");
break;
case 4:
System.out.println("周四");
break;
case 5:
System.out.println("周五");
break;
case 6:
System.out.println("周六");
break;
case 7:
System.out.println("周日");
break;
default:
System.out.println("日期编号非法!");
break;
}
}
2、需求:给一个数字编号,判断是不是工作日
改进上面的代码
public static void main(String[] args) {
int week = 5;
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("是工作日");
break;
case 6:
case 7:
System.out.println("是周末");
break;
default:
System.out.println("编号非法!");
break;
}
}
switch多分支语句case后的表达式的数据类型包括6种:byte,short,char,int4种整型类型以及String字符串类型和枚举类型。
如果其中的某个case满足条件得到执行,执行完该常量表达式下语句体,如若不加break;结束,会有一个穿透的效果,代码会逐行执行,直到遇到下一个break才会结束。
如果所有的case常量表达式都不满足就会执行default里面的语句。
default位置可以不放在末尾,如果default在最后,里面的break语句也可以省略,但是为了便于阅读和维护,一般写在最后。
总结
主要注意 if( ) { } 格式里面的分号不要写错位置,避免打乱原本的执行逻辑,if里面也可以再嵌套if-else,注意实际需求的逻辑就行了。
if-else-if语句:上层if判断条件对下层if判断条件的隐含条件。
switch-case语句只能对常量进行判断,不能对取值范围进行判断。
switch-case注意每一个case结束后要加break语句,不加break语句会有穿透效果。