3、 条件控制语句

3.1 流程控制语句-顺序结构

流程控制语句:通过一些语句,来控制程序的【执行流程】
流程控制语句分类:
顺序结构
分支结构(if,switch)
循环结构(for,while,do...while)
顺序结构语句是Java程序,默认的执行流程,按照代码的先后顺序依次执行。
从上到下,从左到右。

3.2 if语句格式1

if语句格式
格式:
if(关系表达式){
语句体;
}
执行流程:
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体
3、如果关系表达式的值为false就不执行语句体
4、继续执行后面的语句内容

if语句注意事项
注意事项:
1、if语句所控制的语句体,如果是一条语句,大括号可以省略不写(但是不建议)
2、if语句的小括号后面,没有分号

3.3 if语句格式2

if语句格式2
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体1
3、如果关系表达式的值为false就执行语句题2
4、继续执行后面的语句内容

3.4 if语句格式3

格式:
if(判断条件1){
语句体;
}else if(判断条件2){
语句体2;
}
...
else{
语句体n+1;
}
执行流程:
1、首先计算判断条件1的值
2、如果值为true就执行语句体1;如果值为false就计算判断条件2的值
3、如果值为true就执行语句体2;入股值为false就计算判断条件3的值
4、...
5、如果没有任何判断条件为true,就执行语句体n+1。

public static void main(String[] args){
	int score = -1;
	
	if(score >= 90 && score <= 100){
		System.out.println("优秀");
	}else if (score >= 80 && score <= 89){
		System.out.println("良好");
	}else if (score >= 70 && score <= 79){
		System.out.println("中等");
	}else if (score >= 60 && score <= 69){
		System.out.println("及格");
	}else if (score >= 0 && score <= 59){
		System.out.println("请努力加油!");
	}else{
		System.out.println("成绩有误!");
	}
}

3.5 switch语句的case穿透现象

switch语句的case穿透现象
需求:键盘录入星期数,输出工作日、休息日。
(1-5)工作日,(6-7)休息日。
case穿透是如何产生的?
如果switch语句中,case省略了break语句,就会开始case穿透。
现象:当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行
直到看见break,或者将整体switch语句执行完毕,才会结束。

public static void main(String[] args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入星期数:");
	int week = sc.nextInt();
	
	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;		
	}
}

当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行直到看到break,或者将整体switch语句执行完毕,才会结束。
当发现switch语句中,多个case给出的语句体出现了重复的,就可以考虑使用case穿透来优化代码。

3.6 分支语句switch语句

switch语句格式和说明

注意事项:
1、case给出的值不允许重复
2、case后面的值只能是常量,不能是变量