第15篇:Java控制流程语句

📌 系列导航《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第14篇:Java final关键字详解 |
➡️ 下一篇:第16篇:禁止使用Lombok

一、核心知识点

  • 条件分支:if-elseswitch-case
  • 循环:forwhiledo-while
  • 跳转:breakcontinuereturn
  • switch新特性(Java 12+:箭头语法,表达式返回值)
  • 循环标签(带break/continue跳出多层循环)

二、通俗讲解(1分钟开心学)

1. if-else
最常用的分支结构,满足条件执行某段代码。

2. switch-case
当有多个固定值选项时,比多个if-else更清晰。

  • 传统写法:每个case后需要break,否则会“穿透”(fall-through)。
  • Java 12+箭头写法case 1 -> {},不需要break,更简洁。
  • switch表达式:可以用yield返回值。

3. 循环

  • for:知道循环次数时使用。
  • while:先判断后执行,可能一次都不执行。
  • do-while:先执行一次再判断,至少执行一次。

4. break、continue、return

  • break:跳出当前循环或switch
  • continue:跳过本次循环剩余语句,进入下一次迭代。
  • return:结束整个方法。

5. 跳出多层循环
使用标签(label):

outer: for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) break outer;
    }
}

三、实操代码案例 + 场景说明

场景:写一个学生成绩等级转换器,并输出1到100之间的所有偶数。

public class ControlFlowDemo {
    public static void main(String[] args) {
        // if-else
        int score = 85;
        if (score >= 90) {
            System.out.println("A");
        } else if (score >= 80) {
            System.out.println("B");
        } else {
            System.out.println("C");
        }
        
        // switch传统写法
        int day = 3;
        switch (day) {
            case 1: System.out.println("周一"); break;
            case 2: System.out.println("周二"); break;
            default: System.out.println("其他");
        }
        
        // switch新特性(Java 12+)
        String result = switch (day) {
            case 1, 2, 3, 4, 5 -> "工作日";
            case 6, 7 -> "周末";
            default -> "无效";
        };
        System.out.println(result);
        
        // for循环输出1到100的偶数,遇到66跳过,遇到88终止
        for (int i = 1; i <= 100; i++) {
            if (i % 2 != 0) continue;  // 跳过奇数
            if (i == 66) continue;     // 跳过66
            if (i == 88) break;        // 终止循环
            System.out.print(i + " ");
        }
        
        // do-while至少执行一次
        int x = 10;
        do {
            System.out.println("至少执行一次,x=" + x);
            x++;
        } while (x < 5);
    }
}

四、避坑要点

错误/误区 后果 正确做法
switch忘记break 继续执行下一个case(穿透) 要么写break,要么用箭头语法
浮点数用在switch 编译错误 switch支持intcharStringenum等,不支持浮点
循环条件中误用赋值=而不是== 无限循环或逻辑错误 常量放左边:5 == i避免误写
在循环中修改正在遍历的集合(非迭代器) ConcurrentModificationException 使用Iteratorremove或收集后统一删除

五、面试高频考点

Q1:breakcontinue的区别?

break跳出整个循环;continue跳过本次循环的剩余代码,进入下一次迭代。

Q2:如何跳出多层循环?

使用带标签的breakouter: for(...){ for(...){ break outer; } }

Q3:switch支持哪些数据类型?

byteshortcharintString(Java 7+)、enum(Java 5+)。不支持longfloatdouble

六、练习题

  1. 编程:用switch实现判断月份天数(不考虑闰年),要求使用箭头语法。
  2. 代码填空:输出1到100之间所有能被3整除但不能被5整除的数,用continue实现。
  3. 分析:以下代码输出什么?
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (j == 1) break;
            System.out.print(i + "" + j + " ");
        }
    }
    

📊 你的学习进度

  • 当前:第15篇 / 共44篇 · 第二阶段:核心语法与面向对象(第5~20篇)
  • ✅ 已完成:第1~14篇
  • 📖 正在学:第15篇
  • ⏳ 待学习:第16~44篇

👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇

💡 本专栏每篇都包含:避坑表 + 面试高频考点 + 练习题。每天30分钟,100天拿offer!


👉 下一篇预告

《禁止使用Lombok》

内容简介:Lombok的工作原理、优缺点、继承场景下的equals陷阱、为什么大厂禁止使用、替代方案。

💡 学完这篇,你将不再盲目依赖Lombok,写出更安全的Java代码。

📌 《Java 100 天进阶之路 | 从入门到上岗就业》 每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!

更多推荐