一、今日目标

  1. 学会 switch 分支(替代多 if 判断)
  2. 认识 do-while 循环
  3. 彻底分清:if / switch / for / while / do-while
  4. 敲代码运行,巩固前三天内容

二、知识点极简讲解

  1. switch适合:固定值判断(星期、月份、选项 1/2/3)不能写范围,只能判断等于某个固定数字 / 字符

  2. do-while特点:先执行一次代码,再判断条件不管条件成不成立,至少跑 1 次


三、Day04 代码(新建类 → Day04 直接复制)

java

运行

public class Day04 {
    public static void main(String[] args) {

        // 1. switch 语句 固定值判断
        int week = 3;
        switch (week){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            default:
                System.out.println("未知星期");
        }

        System.out.println("----------");

        // 2. do-while 循环 先执行 再判断
        int i = 1;
        do {
            System.out.println("do-while 循环:" + i);
            i++;
        }while (i <= 3);
    }
}

四、关键必记(考试 + 写代码必用)

  1. switch 里必须加 break不加 break 会「穿透」,直接往下全部执行
  2. 区别总结(背下来)
  • 范围判断(分数、年龄)→ if / else if
  • 固定选项(123、星期)→ switch
  • 固定次数 → for
  • 未知次数、反复尝试 → while
  • 必须先执行一次 → do-while

五、操作步骤

  1. IDEA 新建 Java 类 Day04
  2. 粘贴代码
  3. Ctrl+Alt+L 格式化
  4. 右键运行看结果

六、今日小作业(超简单)

用 switch 判断:定义变量 int num = 2case 1 输出:学习case 2 输出:敲代码case 3 输出:休息

关于case穿透

1. 先看结论

  • 正常单独用 case:必须加 break
  • 故意不加 break:叫「case 穿透」,可以合并多个选项

2. 举这个例子

java

运行

int week = 3;
switch (week){
    case 1:
        System.out.println("星期一");
    case 2:
        System.out.println("星期二");
    case 3:
        System.out.println("星期三");
        break;
    default:
        System.out.println("未知");
}

现在:week = 3只走 case3 ✅ 没问题

如果:week = 1,且删掉 case1、case2 的 break执行顺序:

  1. 匹配到 case 1 → 打印星期一
  2. 没有 break,直接往下掉
  3. 自动执行 case 2 → 打印星期二
  4. 再往下 case 3 → 打印星期三

结果会一次性输出三行:

plaintext

星期一
星期二
星期三

✅ 这就是 case 穿透


3. 什么时候「故意删掉 break」?

用来合并条件,比如:

1、2、3 都输出「工作日」

java

运行

int day = 2;
switch (day){
    case 1:
    case 2:
    case 3:
        System.out.println("工作日");
        break;
    case 6:
    case 7:
        System.out.println("休息日");
        break;
}

这里故意不写 break,就是正确写法。


4. 极简口诀(背住)

  1. 想要只执行自己这一条 → 必须加 break
  2. 想要多个 case 共用一段代码 → 删掉 break 用穿透
  3. 写作业 / 考试普通场景:每个 case 末尾必加 break

5. 你现在记住一句话

不加 break,代码不会停,会一直往下跑完所有 case

case 后面的数字,必须和变量值 完全相等 才会命中

回到这段代码

java

运行

int day = 2;
switch (day){
    case 1:   // 2 == 1?不成立,直接跳过
    case 2:   // 2 == 2?成立!【入口在这里】
    case 3:   // 不会再判断,只是顺着往下走
        System.out.println("工作日");
        break;
}

流程拆死:

  1. 变量写死是 2
  2. 从上往下比对
  3. 遇到 case 2 完全相等 → 锁定这个为执行入口
  4. 后面没有 break,直接往下穿透,执行共用代码

3. 关键区别(疑惑的点)

  • 匹配只看:变量等于哪个 case
  • 穿透不看判断,只是代码往下顺行

所以:day=2 → 绝对不会匹配 case1只是 case1 没代码、没 break,不影响而已


4. 终极一句话总结

  1. case = 固定值匹配,必须完全相等
  2. 先找对的那个 case 当入口
  3. 没有 break 就往下顺延执行,不再判断
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐