程序流程控制
顺序结构
从下到下顺序执行代码,是程序的默认执行流程。
分支结构
根据表达式的值决定执行哪个分支的代码。
if分支
第一种: if(表达式) { 语句体; } 第二种: if(表达式) { 语句体1; } else { 语句体2; } 第三种: if(表达式) { 语句体1; } else if(表达式2) { 语句体2; } else if(表达式3) { 语句体3; } else if(表达式4) { 语句体4; } ... else { 语句体n+1; }
switch分支
switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; case 值3: 语句体3; break; ... default: 语句体n+1; }
-
if分支更强大,所以switch分支能做的事情if都能做
-
对于区间匹配,建议使用if分支;对于值匹配,建议使用switch分支,因为在这种情况下代码优雅,性能较好。
-
switch分支的一些注意事项:
-
表达式的值只能是byte/short/int/char/String/枚举,不支持double/float/long
-
case后的值只能是字面量,不能是变量,不能重复
-
正常使用switch的时候,一定不要忘记写break,否则会出现穿透现象
-
但是在有些场景下,我们要利用穿透性将多个case中的相同代码集中到一个case块中,这样可以简化代码
-
循环结构
for循环
for(int i = 0; i < 3; i++) { System.out.println("HelloWorld"); }
for循环的应用场景:
-
简化代码的编写,灵活地控制程序的执行
-
批量生产数据
while循环
int i = 0; while(i < 3) { System.out.println("HelloWorld"); i++; }
do-while循环
int i = 0; do { System.out.println("HelloWorld"); i++; } while (i < 3);
-
for循环和while循环的执行流程都是先判断,后执行
-
for循环能做的事情while也能做,反之亦然
-
do-while循环是先执行一次循环体语句,后判断条件
-
for循环的循环变量i,离开了for循环就不能使用了,while和do-while循环的循环变量i,离开了循环还能使用
死循环
for(;;) { System.out.println("HelloWorld"); } // 经典写法 while(true) { System.out.println("HelloWorld"); } do { System.out.println("HelloWorld"); } while(true);
循环嵌套
循环中又写了一个循环
打印: * ** *** **** ***** for(int i = 1; i <= 5; i++) { for(int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); }
break和continue关键字
-
break用来结束当前循环的执行,break可以用在循环和switch中
-
continue用来结束当前循环的当次执行,继续执行下一次循环,continue只能用在循环中
案例技术:随机数
import java.util.Random; Random r = new Random(); // 生成0-25的随机数 int num = r.nextInt(26); // 生成38-59之间的随机数 int num = r.nextInt(22) + 38;