JAVA流程控制语句
一、程序流程
- 定义:只代码执行的先后顺序
- 种类
顺序流程:程序默认流程,按照书写顺序执行
选择流程:选择语句 判断语句
重复流程: 循环控制语句
二、选择流程控制语句
- 判断语句
a. 单支判断
语句格式:
if(布尔表达式)
{
选择执行的代码分支;
}
1
2
3 1 class IfDemo1
4 2 {
5 3 public static void main(String[] args)
6 4 {
7 5 //模拟买票
8 6 /*
9 7 如果乘客身高低于1.2m,就免票
10 8 */
11 9 //不同的人,身高不同,是一个不确定的数据;
12 10 //不确定的数据,需要使用变量保存
13 11 double height = 1.0;//表示定义一个变量,用来描述乘客的身高
14 12
15 13 //因为提醒买票这句话,是根据身高判断的,不会一直执行,有可能执行到,所 以使用单只判断;
16 14 /*
17 15 if(布尔表达式)
18 16 {
19 17 选择执行的代码分支;
20 18 }
21 19 */
22 /*
23 根据要求看,因为只有身高大于或等于1.2,才会提醒买票
24 所以判断条件是:
25 */
26 if(height >= 1.2)
27 {
28 //选择执行的代码分支
29 //用一句话表示乘务员提醒顾客买票
30 System.out.println("请买票!");
31 }
32
33 System.out.println("end!");
34 }
35 }
36
37
b. 双支判断
语句格式:
if(布尔表达式)
{
选择执行的代码分支一;
}else{
选择执行的代码分支二;
}
1 class IfDemo2
2 {
3 public static void main(String[] args)
4 {
5 /*
6 如果考试不低于600分,就买想要的东西;
7 否则,就去搬砖;
8 */
9 /*
10 if(布尔表达式)
11 {
12 选择执行的代码分支一;
13 }else{
14 选择执行的代码分支二;
15 }
16 */
17
18 //实际上有两种可能会执行的动作,所以使用双支判断语句
19 //因为到底执行哪个分支,是根据实际的分数判断的,
20 //而分数是不确定的,所以要定义一个变量
21
22 int score = 699;
23
24 if(score >= 600){
25 //第一种:买东西
26 System.out.println("买IPad!");
27 }else{
28 //第二种:搬砖
29 System.out.println("去工地搬砖!");
30 }
31
32 System.out.println("end!");
33 }
34 }
双之判断
c. 多只判断
语句格式:
if(布尔表达式一)
{
选择执行的代码分支一;
}else if(布尔表达式二){
选择执行的代码分支二;
}else if(布尔表达式三){
选择执行的代码分支三;
}
……
else{
选择执行的代码分支n;
}
1 class IfDemo4
2 {
3 public static void main(String[] args)
4 {
5 /*
6 需求:
7 根据人物的经验,显示相应的等级;
8
9 0~10:初入江湖;
10 >=10~20: 展露头角;
11 >=20~50:行侠天下
12 >=50~80:名动江湖
13 >=80:一统江湖;
14 */
15 /*
16 实际上,只会根据具体的经验,显示一个等级;
17 也就是说实际上只会执行一个操作
18 在多个选择中执行一个,就要使用多只判断语句
19 if(布尔表达式一)
20 {
21 选择执行的代码分支一;
22 }else if(布尔表达式二){
23 选择执行的代码分支二;
24 }else if(布尔表达式三){
25 选择执行的代码分支三;
26 }
27 ……
28 else{
29 选择执行的代码分支n;
30 }
31 */
32 //经验是不确定,所以要定义一个变量保存;
33 int jingYan = -1;
34
35 if(jingYan>=0 && jingYan<10){
36 System.out.println("初入江湖!");
37 }else if(jingYan>=10 && jingYan<20){
38 System.out.println("展露头角!");
39 }else if(jingYan>=20 && jingYan<50){
40 System.out.println("行侠天下!");
41 }else if(jingYan>=50 && jingYan<80){
42 System.out.println("名动江湖!");
43 }else if(jingYan>=80){
44 System.out.println("一统江湖!");
45 }
46
47 System.out.println("end!");
48 }
49 }
多支判断
d. 嵌套循环
在判断语句的代码分支里面再写判断语句,就是嵌套判断;
if(判断条件){
if(判断条件){
选择执行的代码;
}
}
e. 简写单支判断语句
2. 判断语句常见错误
a. 布尔表达式写错(即判断条件)
b. 不该出现分号的地方加上分号
c. else 判断分支条件不能加布尔表达式(判断条件)
d. else不能单独使用
2. 选择语句
语句格式:
switch(常量表达式){
case 匹配值1:选择执行的语句1;
case 匹配值2:选择执行的语句2;
case 匹配值3:选择执行的语句3;
……
case 匹配值n:选择执行的语句n;
default:选择执行的语句n+1;
}
switch语句支持的数据类型:
byte;short;char;int;
枚举(enum);
JDK1.7之后:String;
在执行和case后面的值的匹配时,如果有匹配成功的,就不会再去匹配了;
1 class SwitchDemo
2 {
3 public static void main(String[] args)
4 {
5 /*
6 需求:根据指定的日期,输出相应的星期几;
7 1:星期一;
8 2:星期二;
9 ……
10 7:星期日;
11 */
12
13 //指定的日期不清楚,需要使用一个变量保存:
14 int day = 10;
15
16 switch(day){
17 case 1:System.out.println("星期一");break;
18 case 2:System.out.println("星期二");break;
19 // case 2:System.out.println("星期二");case标签不能重复
20 case 3:System.out.println("星期三");break;
21 case 4:System.out.println("星期四");break;
22 case 5:System.out.println("星期五");break;
23 case 6:System.out.println("星期六");break;
24 case 7:System.out.println("星期日");break;
25 //default语句可以写在上面,如果写在上面,后面的break不能省略
26 default:System.out.println("输入日期有误");
27 }
28 }
29 }
选择语句 switch
switch 什么时候接触
a. 遇到break; b.遇到右边大括号
if语句和switch语句的区别:if的每一个条件判断 都要计算一次值 switch只是开始的时候获取一次常量值
对于区间范围的判断,使用if语句更合适;对于少数的固定值的匹配,使用switch语句更合适;
4. 重复语句
a. 定义:需要重复执行某些动作,需要用到重复流程
b. 形式:
语句格式:
while(布尔表达式)
{
需要重复执行的代码;
}
c. do while形式
语句格式:
do{
需要重复执行的代码;
}while(布尔表达式);
5. for 循环
语句格式:
for(表达式一;表达式二;表达式三)
{
需要重复执行的代码
}
注意:
三种循环总结:
1、如果在开发中,要求循环体代码至少要执行一遍,应该使用do-while循环;
2、如果在开发中,控制循环次数的变量只需要在循环语句中使用,就应该使用for循环;
4. 循环嵌套
a. 如果在循环体里面再书写循环代码,就是嵌套循环;
总结:嵌套循环执行时,执行外层循环的循环体代码,执行一次,内层循环就要全部循环完成;
嵌套循环的执行总次数,等于外层循环的次数和内层循环的次数之积;
所以嵌套循环效率比较低,一般不建议嵌套太多层,两层就够了;
5. 转义字符
6. break & continue
a. break
结束当前所在语句,用于switch和循环语句中
总结:break在嵌套循环中,默认结束离他最近的这个循环;
总结:要结束外层循环,可以加一个标记;这个标记可以自定义;
b. continue :
作用:表示结束本次循环,继续下一次循环;不会影响循环次数;