流程控制语句
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);
}