1.流程控制语句
- 流程控制语句:通过一些语句,来控制程序的执行流程
- 分类:顺序结构、分支结构(if、switch)、循环结构(for、while、do...while)
2.顺序结构
顺序结构是Java程序默认的执行流程,没有特定的语法结构,按照代码的先后顺序,依次执行。程序中大多数的代码都是这样执行的。
例:
public class Hello {
public static void main(String[] args) {
System.out.println("开始");
System.out.println("执行代码1");
System.out.println("执行代码2");
System.out.println("执行代码3");
System.out.println("结束");
}
}
3.if语句
3.1 if语句格式1
//格式
if(关系表达式){
语句体;
}
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体
- 如果关系表达式的值为false就不执行语句体
- 继续执行后面的语句内容
例:
public class Hello {
public static void main(String[] args) {
System.out.println("开始");
int age = 18;
if (age >= 18) {
System.out.println("可以上网吧");
}
System.out.println("结束");
}
}
3.2 if语句注意事项
- if语句中,如果大括号控制的是一条语句,大括号可以省略不写(不建议)
- if语句的( )和{ }之间不要写分号
会报错,编译器认为int num=10;是两条语句,变量定义一条,变量赋值一条,此时{ }不能省略
添加分号后,{ }内语句将不受前面()内条件所控制
3.3 if语句格式2
//格式
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体1
- 如果关系表达式的值为false就执行语句体2
- 继续执行后面的语句内容
例:
public class Hello {
public static void main(String[] args) {
System.out.println("开始");
int age = 17;
if (age >= 18) {
System.out.println("可以上网吧");
}else {
System.out.println("再等等");
}
System.out.println("结束");
}
}
3.4 if语句格式3
//格式
if(判断条件1){
语句体1;
} else if(判断条件2){
语句体2;
}
...
else{
语句体n+1;
}
执行流程:
- 首先计算判断条件1的值
- 如果值为true就执行语句体1;如果值为false就计算判断条件2的值;
- 如果值为true就执行语句体2;如果值为false就计算判断条件3的值;
- ...
- 如果没有任何判断条件为true,就执行语句体n+1。
例:
import java.util.Scanner;
public class Hello {
/*需求:
键盘录入会员身份:
1表示会员,2表示非会员,其余表示输入错误
*/
public static void main(String[] args) {
//键盘录入会员身份
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
int num = sc.nextInt();
//使用if语句区分不同身份,程序打印不同结果
if (num == 1) {
System.out.println("会员身份");
} else if (num == 2) {
System.out.println("非会员身份");
} else {
System.out.println("您的输入有误");
}
}
}
4.switch语句
//格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式说明:
- 表达式:(将要匹配的值)取值为byte、short、int、char、JDK5以后可以是枚举,JDK7以后可以是String。
- case:后面跟的是要和表达式进行比较的值(被匹配的值)。
- break:表示中断、结束的意思,用来结束switch语句。
- default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程:
- 拿着表达式的值,依次和case后面的值进行匹配,匹配成功,就执行对应语句,在执行的过程中,遇到break就会结束
- 如果所有的case都不匹配,就会执行default里面的语句体,然后程序结束掉
public class Hello {
/*
需求:根据变量所记录的值,输出对应的星期
例如:
1-->星期一
2-->星期二
...
建议:如果要进行的判断,是范围性的判断,建议使用if
如果要进行的判断,是固定值的判断,建议使用switch
*/
public static void main(String[] args) {
int week = 1;
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;
}
}
}
注意事项:
- case后面的值只能是常量,不能是变量
- case后面给出的值,不允许重复