流程控制
流程控制
if-else
if 语句
if 语句的格式如下:
if(布尔表达式){// 如果条件为 true,则执行这块代码}
来写个示例:
int age = 20;if (age < 30) { System.out.println("青春年华");}// 输出:青春年华if-else 语句
if-else 语句的格式如下:
if(布尔表达式){// 条件为 true 时执行的代码块}else{// 条件为 false 时执行的代码块}
来写个示例:
int age = 31;if (age < 30) { System.out.println("青春年华");} else { System.out.println("而立之年");}// 输出:而立之年
// 判断闰年(被 4 整除但不能被 100 整除或者被 400 整除)int year = 2020;if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { System.out.println("闰年");} else { System.out.println("普通年份");}// 输出:闰年如果执行语句比较简单的话,可以使用三元运算符来代替 if-else 语句,如果条件为 true,返回 ? 后面 : 前面的值;如果条件为 false,返回 : 后面的值。
int num = 13;String result = (num % 2 == 0) ? "偶数" : "奇数";System.out.println(result);// 输出:奇数if-else-if 语句
if-else-if 语句的格式如下:
if(条件1){// 条件1 为 true 时执行的代码}else if(条件2){// 条件2 为 true 时执行的代码}else if(条件3){// 条件3 为 true 时执行的代码}...else{// 以上条件均为 false 时执行的代码}
来写个示例:
int age = 31;if (age < 30) { System.out.println("青春年华");} else if (age >= 30 && age < 40 ) { System.out.println("而立之年");} else if (age >= 40 && age < 50 ) { System.out.println("不惑之年");} else { System.out.println("知天命");}// 输出:而立之年if 嵌套语句
if 嵌套语句的格式如下:
if(外侧条件){ // 外侧条件为 true 时执行的代码 if(内侧条件){ // 内侧条件为 true 时执行的代码 }}
来写个示例:
int age = 20;boolean isGirl = true;if (age >= 20) { if (isGirl) { System.out.println("女生法定结婚年龄"); }}// 输出:女生法定结婚年龄switch 语句
switch 语句用来判断变量与多个值之间的相等性。变量的类型可以是:
来看一下 switch 语句的格式:
switch(变量) {case 可选值1: // 可选值1匹配后执行的代码; break; // 该关键字是可选项case 可选值2: // 可选值2匹配后执行的代码; break; // 该关键字是可选项......
default: // 该关键字是可选项 // 所有可选值都不匹配后执行的代码}- 变量可以有 1 个或者 N 个值。
- 值类型必须和变量类型是一致的,并且值是确定的。
- 值必须是唯一的,不能重复,否则编译会出错。
- break 关键字是可选的,如果没有,则执行下一个 case,如果有,则跳出 switch 语句。
- default 关键字也是可选的。

来个示例:
int age = 20;switch (age) { case 20 : System.out.println("上学"); break; case 24 : System.out.println("苏州工作"); break; case 30 : System.out.println("洛阳工作"); break; default: System.out.println("未知"); break; // 可省略}
// 输出:上学当两个值要执行的代码相同时,可以把要执行的代码写在下一个 case 语句中,而上一个 case 语句中什么也没有,来看一下示例:
String name = "沉默王二";switch (name) { case "詹姆斯": System.out.println("篮球运动员"); break; case "穆里尼奥": System.out.println("足球教练"); break; case "沉默王二": case "沉默王三": System.out.println("乒乓球爱好者"); break; default: throw new IllegalArgumentException( "名字没有匹配项");
}// 输出:乒乓球爱好者枚举作为 switch 语句的变量也很常见,来看例子:
public class SwitchEnumDemo { public enum PlayerTypes { TENNIS, FOOTBALL, BASKETBALL, UNKNOWN }
public static void main(String[] args) { System.out.println(createPlayer(PlayerTypes.BASKETBALL)); }
private static String createPlayer(PlayerTypes playerType) { switch (playerType) { case TENNIS: return "网球运动员费德勒"; case FOOTBALL: return "足球运动员C罗"; case BASKETBALL: return "篮球运动员詹姆斯"; case UNKNOWN: throw new IllegalArgumentException("未知"); default: throw new IllegalArgumentException( "运动员类型: " + playerType);
} }}// 输出:篮球运动员詹姆斯但 switch 不支持 long、float、double 类型,这是因为:
- long 是 64 位整数,不在 switch 一开始设计的范围内(32 位的 int 在大多数情况下就够用了)。
- float 和 double 是浮点数,浮点数的比较不如整数简单和直接,存在精度误差。
for 循环
普通 for 循环
普通的 for 循环可以分为 4 个部分:
1)初始变量:循环开始执行时的初始条件。
2)条件:循环每次执行时要判断的条件,如果为 true,就执行循环体;如果为 false,就跳出循环。当然了,条件是可选的,如果没有条件,则会一直循环。
3)循环体:循环每次要执行的代码块,直到条件变为 false。
4)自增/自减:初始变量变化的方式。
来看一下普通 for 循环的格式:
for(初始变量;条件;自增/自减){// 循环体}
来个示例:
for (int i = 0; i < 5; i++) { System.out.println("沉默王三好美啊");}// 输出:// 沉默王三好美啊// 沉默王三好美啊// 沉默王三好美啊// 沉默王三好美啊// 沉默王三好美啊for-each
for-each 循环通常用于遍历数组和集合,它的使用规则比普通的 for 循环还要简单,不需要初始变量,不需要条件,不需要下标来自增或者自减。来看一下语法:
for(元素类型 元素 : 数组或集合){// 要执行的代码}来看一下示例:
String[] strs = {"沉默王二", "一枚有趣的程序员"};
for (String str : strs) { System.out.println(str);}// 输出:// 沉默王二// 一枚有趣的程序员无限 for 循环
一旦运行起来,就停不下来了,除非强制停止。
for(;;){ System.out.println("停不下来。。。。");}while 循环
来看一下 while 循环的格式:
while(条件){//循环体}
来个示例:
int i = 0;while (true) { System.out.println("沉默王三"); i++; if (i == 5) { break; }}do-while 循环
来看一下 do-while 循环的格式:
do{// 循环体}while(条件);
来个示例:
int i = 0;do { System.out.println("沉默王三"); i++; if (i == 5) { break; }} while (true);break
break 关键字通常用于中断循环或 switch 语句,它在指定条件下中断程序的当前流程。如果是内部循环,则仅中断内部循环。
可以将 break 关键字用于所有类型循环语句中,比如说 for 循环、while 循环,以及 do-while 循环。

用在 for 循环中的示例:
for (int i = 1; i <= 10; i++) { if (i == 5) { break; } System.out.println(i);}用在嵌套 for 循环中的示例:
for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { if (i == 2 && j == 2) { break; } System.out.println(i + " " + j); }}用在 while 循环中的示例:
int i = 1;while (i <= 10) { if (i == 5) { i++; break; } System.out.println(i); i++;}用在 do-while 循环中的示例:
int j = 1;do { if (j == 5) { j++; break; } System.out.println(j); j++;} while (j <= 10);用在 switch 语句中的示例:
switch (age) { case 20 : System.out.println("上学"); break; case 24 : System.out.println("苏州工作"); break; case 30 : System.out.println("洛阳工作"); break; default: System.out.println("未知"); break; // 可省略}continue
当我们需要在 for 循环或者 (do)while 循环中立即跳转到下一个循环时,就可以使用 continue 关键字,通常用于跳过指定条件下的循环体,如果循环是嵌套的,仅跳过当前循环。
来个示例:
for (int i = 1; i <= 10; i++) { if (i == 5) { // 使用 continue 关键字 continue;// 5 将会被跳过 } System.out.println(i);}再来个循环嵌套的例子:
for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { if (i == 2 && j == 2) { // 当i=2,j=2时跳过 continue; } System.out.println(i + " " + j); }}再来看一下 while 循环时 continue 的使用示例:
int i = 1;while (i <= 10) { if (i == 5) { i++; continue; } System.out.println(i); i++;}注意:如果把 if 条件中的“i++”省略掉的话,程序就会进入死循环,一直在 continue。
最后,再来看一下 do-while 循环时 continue 的使用示例:
int i=1;do{ if(i==5){ i++; continue; } System.out.println(i); i++;}while(i<=10);注意:同样的,如果把 if 条件中的“i++”省略掉的话,程序就会进入死循环,一直在 continue。