流程控制就是使用语句去控制程序的走向。程序的执行是过程化的,也就是说默认从上往下依次执行。但有时需要让程序先执行某一部分、不执行某一部分,或者一部分重复执行,这就是流程控制。
006tNbRwgy1fnbmguc0vvj30eg08aaak.jpeg
if 语句是 java 语言选择控制或分支控制语句之一,用于对条件进行判定,根据判定结果的真假给出操作。分支语句包含 3 种:

  1. 单分支 if
  2. 双分支 if … else
  3. 多分支 if …else if

    单分支 if

    if 语句其实就是三目的另一种写法。

    1. if(条件表达式){ // 条件判断为真,就执行 {} 内语句
    2. 执行语句;
    3. }

    双分支 if else

    二选一。

    1. if(条件表达式){ // 条件判断为真,执行语句1
    2. 执行语句1
    3. }else{ // 条件判断为假,执行语句2
    4. 执行语句2
    5. }

    多分支

    依次判断每一个条件表达式,满足某一项则执行且只执行对应 {} 内部代码。

    1. if(条件表达式){
    2. 执行1
    3. }else if(条件表达式){
    4. 执行2
    5. }else n(){
    6. 执行3
    7. }else{
    8. 执行4
    9. }

    switch

    switch 也是多分支的一种,其结构清晰度会优于 else if 。

    1. switch(表达式){
    2. case 常量1: 语句块;
    3. break;
    4. case 常量2: 语句块;
    5. break;
    6. case 常量n: 语句块;
    7. break;
    8. default: 语句块;
    9. break;
    10. }
  4. switch () 中的表达式的结果值只能是 Byte、short、int、char 和 String类型

  5. case 后面只能是常量,且类型应该和表达式的结果值类型保持一致
  6. 所有的 case 和 default 没有顺序而言,可以任意打乱
  7. default 语句可有可无,即,如果问题域没有所有 case 都不匹配才需要执行的特殊代码块,那么可以不写 default 分支
  8. 进入某个 case 后面的语句块,流程会顺序执行,如果没有遇到 break,那么就会继续无条件执行下一个 case 后面的语句块

    yield

    在 JDK14 中 switch 设计了新语法 yield 用于从 switch 表达式中的 case 返回值,可以将它当作一个表达式,每个分支返回不同的值,再赋值给某个变量去接收。
    yield 语法注意点:

  9. 不再需要 break

  10. 需要添加上 default 的值
  11. switch 结束必须有分号
    1. char cha = 'a';
    2. int result = switch (cha) {
    3. case 'a':
    4. yield 97;
    5. case 'b':
    6. yield 98;
    7. default:
    8. yield 0;
    9. };
    10. System.out.println(result);

    ->

    专用于 switch 每个分支都返回一个值,替换掉 case 后面的 “: break”。
    1. System.out.println("请输入一个数字 1-3:");
    2. int num = scan.nextInt();
    3. String result = switch (num) {
    4. case 1 -> "你输入的是1";
    5. case 2 -> "你输入的是2";
    6. case 3 -> "你输入的是3";
    7. default -> "啥也不是";
    8. };
    9. System.out.println(result);