流程控制
程序中最经典的三种执行顺序
- 顺序结构:自上而下地执行代码,最普通的执行顺序。
- 分支结构:根据条件,选择对应代码执行。
- 循环结构:控制某段代码重复执行。
分支结构
if分支
if分支的作用
根据条件(真或假)来决定执不执行某段代码或执行哪段代码。
if分支应用场景
需要根据不同输入选择不同输出或做出不同处理时。
if分支的三种格式
-
if (条件表达式) { 代码块; }
-
if (条件表达式) { 代码块1; } else { 代码块2; }
-
if (条件表达式1) { 代码块1; } else if (条件表达式2) { 代码块2; } else if (条件表达式3) { 代码块3; } ... else { 代码块n; }
- if 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。
if分支的执行流程
格式1:首先判断条件表达式的结果,如果为true执行代码块,为 false 就不执行代码块。
格式2:首先判断条件表达式的结果,如果为true执行代码块1,为 false 就执行代码块2。
格式3:
- 先判断条件表达式1的值,如果为true则执行代码块1,分支结束;如果为false则判断条件表达式2的值。
- 如果值为true就执行代码块2,分支结束;如果为false则判断条件表达式3的值。
- ...
- 如果没有任何条件为true,就执行else分支的代码块n。
switch分支
switch分支的作用
通过比较值来决定执行哪条分支。
switch分支的格式
switch (表达式) {
case 值1:
执行代码1;
break;
case 值2:
执行代码2;
break;
…
case 值n-1:
执行代码n-1;
break;
default:
执行代码n;
}
- 表达式类型只能是byte、short、int或char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float和long。
- case后的值不允许重复,且必须是字面量,不能是变量。
- 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
switch分支的执行流程
- 先执行表达式的值,再拿着这个值去与case后的值进行匹配。
- 与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
- 如果全部case后的值与之匹配都是false,则执行default块的代码。
switch的穿透性
- 若在某个case后没有加上break的话,程序就会一直向下运行,进入其他case中,直到遇到break或一直运行到switch末尾。
- 当存在多个case分支的代码相同时,可以把相同的代码放到一个case块中,其他的case块都通过穿透性穿透到该case块执行代码即可,这样可以简化代码。
if和switch的比较
- if在功能上远远强大于switch。
- 当前条件是区间的时候,应该使用if分支结构。
- 当条件是与一个一个的值比较的时候,switch分支更合适:格式良好,性能较好,代码优雅。
循环结构
循环结构的作用
控制一段代码重复执行多次。
for循环
for循环的格式
for (初始化语句; 循环条件; 迭代语句) {
循环体语句(重复执行的代码);
}
for循环的应用场景
- 有大量重复执行的代码时,可以减少代码的重复编写,灵活地控制程序的执行。
- 批量生产数据。
while循环
while循环的格式
初始化语句;
while (循环条件) {
循环体语句(被重复执行的代码);
迭代语句;
}
while循环的执行流程
- 循环一开始,执行初始化语句一次。
- 接着执行循环条件语句,若为true , 就进到循环体中执行,否则就结束循环。
- 在循环内部执行迭代语句,之后回到步骤2。
do-while循环
do-while循环的格式
初始化语句;
do {
循环体语句;
迭代语句;
} while (循环条件);
do-while循环的执行流程
- 循环一开始,执行初始化语句一次。
- 接着进到循环体中执行循环体语句和迭代语句。
- 接着执行循环条件语句,若为true , 就回到步骤2,否则就结束循环。
do-while循环的特点
先执行后循环。
三种循环的区别
- for循环和while循环先判断后执行,do...while循环先执行后判断。
- for循环和while循环的执行流程是一模一样的,功能上无区别,for能做的while也能做,反之亦然。
- 使用规范:如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
- for循环中,控制循环的变量只在循环中使用。while循环和do-while循环中,控制循环的变量在循环后还可以继续使用。
- 某些先执行后判断的业务场景用do-while循环更好。
死循环
什么是死循环
可以一直执行下去的一种循环,如果没有干预不会停下来。
死循环的应用场景
服务器程序。
死循环的写法
//写法1
for (初始化语句; 循环条件; 迭代语句) {
循环体语句;
}
// 写法2,经典写法
while (true) {
循环体语句;
}
//写法3
do {
循环体语句;
} while (true);
循环嵌套
什么是循环嵌套
循环中又包含循环。
循环嵌套的写法
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(1);
}
}
// 三种循环结构可以互相多次嵌套
循环嵌套的特点
外部循环每循环一次,内部循环会全部执行完一轮。
跳转关键字:break,continue
break
- 跳出并结束当前所在循环的执行,只跳出一层循环,或结束所在switch分支的执行。
- 只能在循环或switch分支中使用。
continue
- 用于跳出当前循环的当次执行,直接进入循环的下一次执行。
- 只能在循环中进行使用。
Random的使用
Random的作用
生成随机数。
使用Random的步骤:
-
导包:
import java.util.Random;
-
生成Random对象:
Random r = new Random();
-
调用Random的方法获得目标区间随机整数:
int number = r.nextInt(左区间, 右区间);
- Random生成的随机数为括号内的左闭右开区间。
猜数字游戏
需求
随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏。
分析
- 先随机生成一个1-100之间的数据。
- 定义一个死循环让用户可以一直猜测。
- 在死循环里,每次都提示用户输入一个猜测的数字,猜大提示过大,猜小提示过小,猜中则结束游戏。
代码
import java.util.Random;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random r = new Random();
int numberTarget = r.nextInt(1, 101); // 获得随机的目标数字,范围为1~100
// 死循环,使玩家重复猜数字
while (true) {
// 得到玩家猜的数字
System.out.println("请输入你猜的数字:");
int numberGuess = sc.nextInt();
//核心逻辑
if (numberGuess > numberTarget){
System.out.println("猜大了");
} else if (numberGuess < numberTarget) {
System.out.println("猜小了");
} else {
System.out.println("猜对了");
break; // 跳出循环,结束游戏
}
}
}
}
标签:语句,case,Java,代码,第三天,笔记,while,循环,执行
From: https://www.cnblogs.com/zgg1h/p/18049402