流程控制就是使用语句去控制程序的走向。程序的执行是过程化的,也就是说默认从上往下依次执行。但有时需要让程序先执行某一部分、不执行某一部分,或者一部分重复执行,这就是流程控制。
if 语句是 java 语言选择控制或分支控制语句之一,用于对条件进行判定,根据判定结果的真假给出操作。分支语句包含 3 种:
- 单分支 if
- 双分支 if … else
-
单分支 if
if 语句其实就是三目的另一种写法。
if(条件表达式){ // 条件判断为真,就执行 {} 内语句
执行语句;
}
双分支 if else
二选一。
if(条件表达式){ // 条件判断为真,执行语句1
执行语句1;
}else{ // 条件判断为假,执行语句2
执行语句2;
}
多分支
依次判断每一个条件表达式,满足某一项则执行且只执行对应 {} 内部代码。
if(条件表达式){
执行1;
}else if(条件表达式){
执行2;
}else n(){
执行3;
}else{
执行4;
}
switch
switch 也是多分支的一种,其结构清晰度会优于 else if 。
switch(表达式){
case 常量1: 语句块;
break;
case 常量2: 语句块;
break;
case 常量n: 语句块;
break;
default: 语句块;
break;
}
switch
()
中的表达式的结果值只能是 Byte、short、int、char 和 String类型- case 后面只能是常量,且类型应该和表达式的结果值类型保持一致
- 所有的 case 和 default 没有顺序而言,可以任意打乱
- default 语句可有可无,即,如果问题域没有所有 case 都不匹配才需要执行的特殊代码块,那么可以不写 default 分支
进入某个 case 后面的语句块,流程会顺序执行,如果没有遇到 break,那么就会继续无条件执行下一个 case 后面的语句块
yield
在 JDK14 中 switch 设计了新语法
yield
用于从 switch 表达式中的 case 返回值,可以将它当作一个表达式,每个分支返回不同的值,再赋值给某个变量去接收。
yield 语法注意点:不再需要 break
- 需要添加上 default 的值
- switch 结束必须有分号
char cha = 'a';
int result = switch (cha) {
case 'a':
yield 97;
case 'b':
yield 98;
default:
yield 0;
};
System.out.println(result);
->
专用于 switch 每个分支都返回一个值,替换掉 case 后面的 “: break”。System.out.println("请输入一个数字 1-3:");
int num = scan.nextInt();
String result = switch (num) {
case 1 -> "你输入的是1";
case 2 -> "你输入的是2";
case 3 -> "你输入的是3";
default -> "啥也不是";
};
System.out.println(result);