Java程序流程控制
Java提供了一些流程控制语句,来控制程序的执行流程。
1. 顺序结构
- 顺序结构是程序的默认结构,如果你没有写其他的结构,按照代码的先后顺序,依次执行。程序中大多数的代码都是这样执行的。
2. 分支结构
2.1 if
- 根据判定的结果(真或假)决定执行某个分支的代码。
- if分支有三种格式。
- 格式1
/** * 目标:学会使用if分支结构解决问题,理解其流程。 * 格式1: * if(条件表达式){ * 语句体; * } */ public class IfDemo1 { public static void main(String[] args) { // 判读学生的成绩是否达到60分,未达到则判定学生成绩不合格 int x = 59; if(x < 60){ // 你的成绩是59分,不合格 System.out.println("你的成绩是" + x + "分," + "不合格"); } } }
- 格式2
/** * 目标:学会使用if分支结构解决问题,理解其流程。 * 格式2: * if(条件表达式){ * 语句体1; * } else{ * 语句体2; * } */ public class IfDemo2 { public static void main(String[] args) { // 付款时判断钱包余额是否充足 double money = 200; if(money >= 500){ System.out.println("付款成功!"); }else { System.out.println("对不起,你的余额不足。"); } } }
- 格式3
/** * 目标:学会使用if分支结构解决问题,理解其流程。 * 格式3: * if(条件表达式1){ * 语句体1; * } else if(条件表达式2){ * 语句体2; * } else if(条件表达式3){ * 语句体3; * } * ... * else{ * 语句体n+1; * } */ public class IfDemo3 { public static void main(String[] args) { // 成绩评级:0-60 C 60-80 B 80-90 A 90-100 A+ int score = 99; if (score >= 0 && score < 60){ System.out.println("你的成绩等级为:C"); }else if (score >= 60 && score < 80){ System.out.println("你的成绩等级为:B"); }else if (score >= 80 && score < 90){ System.out.println("你的成绩等级为:A"); }else if (score >= 90 && score <= 100){ System.out.println("你的成绩等级为:A+"); }else { System.out.println("你录入的成绩有误!!!"); } } }
2.2 switch
- 也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。
- switch案例
- 周一:埋头苦干,解决bug
- 周二:请求大牛程序员帮忙
- 周三:今晚啤酒、龙虾、小烧烤
- 周四:主动帮助新来的程序媛解决bug
- 周五:今晚吃鸡
- 周六:与王阿姨介绍的小美相亲
- 周末:郁郁寡欢、明天上班
/**
* 目标:学会使用switch分支结构解决问题,理解其流程。
* 格式:
* switch(表达式){
* case 值1:
* 执行代码...;
* break;
* case 值2:
* 执行代码...;
* break;
* ...
* case 值n-1:
* 执行代码...;
* break;
* default:
* 执行代码n;
* }
*/
public class SwitchDemo1 {
public static void main(String[] args) {
String day = "周三";
switch (day){
case "周一":
System.out.println("埋头苦干,解决bug");
break;
case "周二":
System.out.println("请求大牛程序员帮忙");
break;
case "周三":
System.out.println("今晚啤酒、龙虾、小烧烤");
break;
case "周四":
System.out.println("主动帮助新来的程序媛解决bug");
break;
case "周五":
System.out.println("今晚吃鸡");
break;
case "周六":
System.out.println("与王阿姨介绍的小美相亲");
break;
case "周末":
System.out.println("郁郁寡欢、明天上班\n");
break;
default:
System.out.println("输入数据有误");
}
}
}
- 执行流程:
- 先执行表达式的值,拿着这个值去与case后的值进行匹配。
- 匹配那个case的值为true就执行那个case,遇到break就跳出switch分支。
- 如果case后的值都不匹配则执行default代码。
- switch分支注意事项:
- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
- case给出的值不允许重复,只能是字面量,不能是变量。
- 不要忘记写break,否则会出现穿透现象。
- switch的穿透性:如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),知道遇到break才跳出分支,这就是switch的穿透性。
3. 循环结构
3.1 for循环
- 控制一段代码反复执行很多次。
/**
* 目标:学会使用for循环,并理解它的执行流程
* 格式:
* for(初始化语句; 循环条件; 迭代语句){
* 循环体语句(重复执行的代码);
* }
*/
public class ForDemo1 {
public static void main(String[] args) {
// 输出3次Hello World
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
}
}
3.2 while循环
/**
* 目标:学会使用while循环,并理解它的执行流程
* 格式:
* 初始化语句;
* while(循环条件){
* 循环体语句(被重复执行的代码);
* 迭代语句;
* }
*/
public class WhileDemo1 {
public static void main(String[] args) {
int i = 0;
while (i < 3){
System.out.println("Hello World");
i++;
}
}
}
- 什么时候用for循环,什么时候用while循环?
- 功能上是完全一样的,for能解决的while也能解决,反之亦然。
- 使用规范是:知道循环几次,使用for;不知道循环几次建议使用while。
3.3 do-while循环
- 先执行再判断循环条件。
- do-while循环的特点:一定会先执行一次循环体。
/**
* 目标:学习使用do-while循环,并理解它的执行流程。
* 格式:
* 初始化语句;
* do{
* 循环体语句;
* 迭代语句;
* }while(循环条件);
*/
public class DoWhileDemo1 {
public static void main(String[] args) {
int i = 0;
do {
System.out.println("Hello World");
i++;
}while (i < 3);
}
}
三种循环的区别
- for循环和while循环(先判断后执行)
- do…while(第一次先执行后判断)
for和while的区别
- for循环和while循环的执行流程是一摸一样的。
- 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
- for循环中,控制循环的变量只在循环中可以使用。while循环中,控制循环的变量在循环后还可以继续使用。
4. 跳转关键字:break、continue
- break:跳出并结束当前所在循环的执行。
- continue:用于跳出当前循环的当次执行,进入下一次循环。
注意事项:
- break:只能用于结束所在循环,或者结束所在switch分支的执行。
- continue:只能在循环中进行使用。
/**
* 目标:理解break 和 continue的作用
*/
public class BreakAndContinueDemo1 {
public static void main(String[] args) {
// 输出三次Hello World
for (int i = 0; i < 5; i++) {
System.out.println("Hello World " + i);
if (i == 2){
break;
}
}
System.out.println("===========华丽的分割线===========");
for (int i = 0; i < 5; i++) {
if (i == 2){
continue;
}
System.out.println("Hello World " + i);
}
}
}