流程控制语句结构
流程控制语句结构
1 顺序结构
1.1 同一个方法中,从上往下,顺序执行
2 分支结构
2.1 条件判断
-
1、单分支条件判断
-
语法
-
if(条件表达式){ 当条件表达式为true时,要执行的语句块 }
- (1)如果条件成立,就执行语句块,如果条件不成立,就不执行语句块
- (2){}可以省略,默认只带一句,建议不要省略
-
-
-
2、双分支条件判断
-
语法
-
if(条件表达式){ 当条件表达式为true时,要执行的语句块1 }else{ 当条件表达式为false时,要执行的语句块2 }
- (1)如果条件成立,就执行语句块1,如果条件不成立,就执行语句块2
- (2){}可以省略,默认只带一句,建议不要省略
- (3)else不可以单独存在的,必须有if配对
-
-
-
3、多分支条件判断
-
语法
-
if(条件表达式1){ 当条件表达式1为true时,要执行的语句块1 }else if(条件表达式2){ 当条件表达式2为true时,要执行的语句块2 }else if(条件表达式3){ 当条件表达式3为true时,要执行的语句块3 } ….. else{ 当以上所有条件表达式都不成立时,要执行的语句块n+1 }
-
(1)如果条件表达式1成立,执行语句块1,如果条件表达式1不成立才会去判断条件表达2,如果条件表达式2成立,那么执行语句块2,如果条件表达式2不成立,才会去看条件表达式3,依次类推。只有一个分支会被执行
-
(2){}可以省略,默认只带一句,建议不要省略
-
(3)else不可以单独存在的,必须有if配对
-
(4)多个条件表达式的范围
-
互斥,没有交集
-
例如
-
if(age>=0 && age<18){ System.out.println(“未成年”); }else if(age >=18 && age<60){ System.out.println(“成年”); }
- 两个条件没有交集
-
-
顺序可以互换
-
-
包含
-
例如
-
if(age<18){ System.out.println(“未成年”); }else if(age<60){ System.out.println(“成年”); }
- 两个条件有包含关系
-
-
顺序不可以调整
- 范围小的在上面,范围大的在下面
-
-
-
-
-
-
4、嵌套
-
在任意一个语句块中,都还可以嵌套任意一种分支结构
-
当外部的条件成立的情况下,才会进行内部的条件判断
-
示例
if(条件表达式1){
if(条件表达式2){
当条件表达式1成立,并且条件表达式2也成立时执行
}else if(条件表达式3){
当条件表达式1成立,并且条件表达式2不成立,条件表达式3成立时执行
}else{
当条件表达式1成立,并且条件表达式2不成立,条件表达式3不成立时执行
}
}else{
if(条件表达式4){
当条件表达式1不成立,条件表达式4成立,执行
}else if(条件表达式5){
当条件表达式1不成立,条件表达式4不成立,条件表达式5成立,执行
}else{
当条件表达式1不成立,条件表达式4不成立,条件表达式5也不成立,执行
}
}
-
-
2.2 选择结构
-
语法结构
switch(表达式){
case 常量值:
语句块; 【break;】
case 常量值:
语句块; 【break;]
….
【
default:
语句块; 【break;】
】
}
-
表达式类型要求
- 基本数据类型:byte,short,char,int
- 引用数据类型:枚举(JDK1.5之后),String(JDK1.7之后)
-
执行过程
- 入口: (1)当与某个case匹配 (2)当与所有case都不匹配,如果有default,从default进入
- 出口: (1)switch结束的} (2)break;
-
其他要求
- (1)case后面必须是常量或常量表达式
- (2)所有case后面的值必须不相同
- (3)case后面常量值的类型与表达式的类型要一致
2.3 条件判断与选择结构的取舍
- (1)凡是可以使用switch…case一定可以用if..else代替,凡是反过来不一定
- (2)当所有的条件判断是“常量的等值判断”,那么建议使用switch…case,可读性更好,效率更高
3 循环结构
3.1 、for循环
-
语法结构
- for(初始化表达式①; 循环条件②; 迭代表达式④){ 循环体语句(要重复的代码)③ }
-
执行的过程
- (1)初始化表达式①
- (2)循环条件的判断②
- (3)如果条件成立,执行循环体语句③一次
- (4)迭代表达式④
- (5)回到(2),直到循环条件不成立,结束for循环
-
注意
- (1)for(;;)中两个分号不可以省略,但是表达式可以省略
- (2)适用于起始条件和终止条件明确,循环次数比较明显的情况
3.2 、while循环
-
语法结构
- while(循环条件){ 循环体语句; }
-
执行过程
- (1)循环条件判断
- (2)如果条件成立,执行循环体语句一次
- (3)回到(1),直到循环条件不成立,结束while循环
-
注意
- (1)循环条件明显,次数不明显
- (2)经常这样使用while(true) 和 break 结合
3.3 、do..while循环
-
语法结构
- do{ 循环体语句; }while(循环条件);
-
执行过程
- (1)先执行一次循环体语句
- (2)再判断循环条件,是否继续下一次
- (3)如果循环条件成立,执行下一次循环体语句
- (4)回到(2),直到循环条件不成立,结束do..while
-
注意
- (1)和while的最大区别,至少执行一次
3.4 、foreach
3.5 、嵌套
-
(1)无论哪种循环,循环中都可以嵌套任一种循环结构
-
(2)执行过程
- 外循环循环一次,内循环循环一轮
3.6 作用:重复执行某些代码
4 跳转、中断
4.1 、break
-
可以适用于switch和循环
-
默认表示结束当层循环或switch
-
break 标签;
-
表示结束指定的循环
-
标签:循环
out_label:for(int i = 1; i<=5; i++){ inner_label:while(true){ System.out.println("请输入数字:"); int num = input.nextInt(); if(num>0){ positive ++; }else if(num<0){ negative++; }else{ //break;//结束的是while内层循环 break out_label; //break inner_label; } }
}
-
4.2 、continue
- 只能用于循环
- 表示提前结束当层本次循环,进入下一次循环
4.3 、return
- 结束当前方法