流程控制语句
java中的语句结构:
- 顺序结构: 从上到下,从左到右
- 选择结构: 满足条件执行,不满足不执行
- 循环结构: 重复的不停的执行某些内容
选择结构
if选择语句
-
单选择|单分支
-
//语法格式 if(条件判断语句) { 执行语句体; }
-
执行流程:
- 执行条件判断语句
- 如果结果为true,执行{ }中的语句体
- 如果结果为false,跳过if结构,不执行语句体,继续向下执行后面的代码
-
-
双选择|双分支
-
//语法格式 if(条件判断语句) { 执行语句体1; }else { 执行语句体2; }
-
执行流程:
- 执行条件判断语句
- 如果结果为true,执行语句体1
- 如果结果为false,执行语句体2
-
-
多选择|多分支
-
//语法格式 if(条件判断语句1) { 执行语句体1; }else if(条件判断语句2) { 执行语句体2; }else if(条件判断语句3) { 执行语句体3; } ... ... else { 执行语句体n; }
-
执行流程:
-
执行条件判断语句1,如果结果为true,执行语句体1,如果结果为false,继续详细判断
-
执行条件判断语句2,如果结果为true,执行语句体2,如果结果为false,继续详细判断
… …
-
如果以上条件都不满足,执行else中的语句体n
-
-
注意:如果语句体只有一句,前后的{ }可以省略。
switch选择语句
- 语法结构:
switch(表达式) { // 表达式: 一般指一个变量,或者使用表达式
// 数据类型: byte,short,int,char,枚举(jdk1.5),字符串(jdk1.7)
case 值1: // 表达式的值会与case后的值进行判定,判定是否相等
语句体1;
break; // 提前结束swtich语句,防止case穿透
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
....
default: // 如果当以上的case后的值都不满足表达式的结果的时候,执行default中的内容
// 位置可以改变,可以放在swtich中的任意位置
// 一般放在最后,break可以省略,如果放在其他位置,break不能省略
语句体n;
break;
}
- 执行流程:
- 计算表达式的结果
- 表达式的结果与case后的值依次判断,代码从上到下依次执行,如果与当前case后面值相同,执行对应的语句体
- 如果表达式的结果与所有case后的值都不相同,执行default中的语句体
- 注意事项:
- case穿透:如果执行完成对应的语句体后没有break,会发生case穿透,后面的case不再判断,执行执行下面的语句体,直到遇到下一个break或者switch的结束而结束
- default位置可以改变,可以放在swtich中的任意位置,一般放在最后,break可以省略,如果放在其他位置,break不能省略
循环语句
需要重复大量执行某些动作时,可以使用循环语句。java中循环语句有以下三种:
- for 循环语句
- while 循环语句
- do … while 循环语句
for循环语句
-
语法结构:
// 条件初始化:声明一个变量i,并且赋初始值,作用域只是在当前循环体中 // 变量i,可以控制循环的次数,控制要使用的参数 // 条件判断:判断条件i是否满足要求 // 条件变化:i自身值的改变 for(条件初始化; 条件判断; 条件变化) { 循环体语句; }
-
执行流程:
- 执行条件初始化,声明一个变量并赋初始值
- 进行条件判断,判断是否满足条件,如果结果false,for循环结束,循环体不会再次进入
- 如果结果true,满足条件,就去执行以此循环体语句
- 执行条件变化
- 从二次循环开始,就重复执行2,3,4步
-
注意点:
- 如果循环体语句只有一句,前后的{}可以省略
- for( ; ; ) {} 是一个死循环,后面不能有其他代码,否则编译报错:无法访问的语句
while循环语句|条件循环
-
语法结构:
条件初始化; while(条件判断) { 循环体语句; 条件变化; // 切记不要漏掉,否则可能会形成死循环 }
-
执行流程:
- 条件初始化
- 执行条件判断
- 如果满足条件执行循环体语句,如果不满足条件结束
- 重复执行2,3步
-
注意点:
- while (true) {}:典型的死循环
- while (false) {循环体语句;}:会报错;boolean b = false; while (false) {循环体语句;}:不会报错
do… …while循环语句
-
语法结构:
条件初始化; do{ 循环体语句; 条件变化; } while(条件判断);
-
与while循环的区别:
- while循环:先判断条件是否满足,再执行循环体
- do… …while循环语句:先执行,后判断,无论是否满足条件,都至少执行一次
循环嵌套
循环语句可以互相嵌套,形成多重循环,其中较常见的是双重for循环
-
语法结构:
for(条件初始化1; 条件判断1; 条件变化1){ 循环体语句; for(条件初始化2; 条件判断2; 条件变化2){ 循环体语句; } 循环体语句; }
-
外层循环执行一次,内层循环执行一轮
-
举例:打印九九乘法表:
public class Nine { public static void main(String[] args) { for(int i = 1; i <= 9; i ++) { for(int j = 1; j <= i; j ++) { int mul = i * j; System.out.print(j + "×" + i + "=" + mul + "\t"); } System.out.println(); } } }
break和continue
-
break:
- 作用: 终止,停止,结束整个所在的循环语句
- 应用场景: 循环和switch语句中
//模拟击鼓传花场景 //产生一个1~11之间的随机数 int num=(int)(Math.random()*(11-1+1)+1); System.out.println(num); int i=0; //学生的编号 //游戏开始 while(true){ i++; if(i==num){ System.out.println("游戏结束"+i); break; // 与while(true)配合是break的典型用法 } }
-
continue:
- 作用: 跳过本次循环后面的所有内容,继续下一次循环
- 应用场景: 只能用在循环中
// 打印1~10之间的数,遇到3|3的倍数就跳过 for(int i = 0; i <= 10; i++) { if(i % 3 == 0) { System.out.println("跳过"); continue; //下面的代码不执行,直接进入下一次循环 //System.out.println(i); // 编译报错: 无法访问的语句 } System.out.println(i); }