Java分支结构详解:if与switch

下面是一份系统化讲解的 Java 分支结构(if 与 switch)详解,从基础到进阶一步讲清 👇


一、什么是分支结构?

分支结构用于根据条件选择执行不同代码路径

👉 核心思想:

“条件成立 → 执行A,否则 → 执行B”


二、if 语句(最常用)

1️⃣ 基本结构

if (条件) {
    // 条件为 true 执行
}

例子:

int age = 18;

if (age >= 18) {
    System.out.println("成年人");
}


2️⃣ if – else

if (条件) {
    // true
} else {
    // false
}

例子:

if (age >= 18) {
    System.out.println("成年人");
} else {
    System.out.println("未成年人");
}


3️⃣ if – else if – else(多分支)

if (条件1) {
} else if (条件2) {
} else if (条件3) {
} else {
}

例子:

int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}


4️⃣ 嵌套 if

if (条件1) {
    if (条件2) {
        // 嵌套逻辑
    }
}

例子:

if (age >= 18) {
    if (age < 60) {
        System.out.println("在职年龄");
    }
}


⚠️ if 使用注意点

① 条件必须是 boolean

if (1) // ❌ 错误(Java不允许)


② 大括号建议不省略

if (age > 18)
    System.out.println("A");
    System.out.println("B"); // ⚠️ 实际不会受if控制


③ 判断顺序很重要(性能 + 正确性)

if (obj != null && obj.length() > 0)


三、switch 语句(多值判断)

1️⃣ 基本结构(传统写法)

switch (表达式) {
    case 值1:
        // 代码
        break;
    case 值2:
        // 代码
        break;
    default:
        // 默认
}

例子:

int day = 3;

switch (day) {
    case 1:
        System.out.println("周一");
        break;
    case 2:
        System.out.println("周二");
        break;
    case 3:
        System.out.println("周三");
        break;
    default:
        System.out.println("其他");
}


2️⃣ break 的作用(重点)

👉 防止“贯穿(fall-through)”

int x = 2;

switch (x) {
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
    case 3:
        System.out.println("3");
}

输出:

2
3

👉 因为没有 break


3️⃣ 多 case 合并

switch (day) {
    case 1:
    case 2:
    case 3:
        System.out.println("工作日");
        break;
    case 6:
    case 7:
        System.out.println("周末");
        break;
}


4️⃣ 支持的数据类型

支持:

  • byte / short / int / char
  • String(Java 7+)
  • enum

❌ 不支持:

switch (1.5) // double ❌


5️⃣ switch 新写法(Java 12+ 推荐🔥)

更简洁:

int day = 3;

switch (day) {
    case 1 -> System.out.println("周一");
    case 2 -> System.out.println("周二");
    case 3 -> System.out.println("周三");
    default -> System.out.println("其他");
}


6️⃣ switch 表达式(可返回值)

int day = 3;

String result = switch (day) {
    case 1 -> "周一";
    case 2 -> "周二";
    case 3 -> "周三";
    default -> "其他";
};


四、if vs switch(核心对比)

对比点ifswitch
判断类型任意 boolean 表达式固定值匹配
范围判断✅ 支持(如 > <)❌ 不支持
多值判断❌ 冗长✅ 简洁
可读性复杂条件更清晰多分支更清晰
性能一般多分支更优(可能优化为跳表)

五、什么时候用 if?什么时候用 switch?

✅ 用 if 的场景

  • 范围判断(如成绩区间)
  • 复杂逻辑条件(&&、||)
  • 非固定值判断

👉 示例:

if (score >= 90)


✅ 用 switch 的场景

  • 固定值匹配(菜单、状态码)
  • 多个离散值

👉 示例:

switch (status)


六、常见坑(面试重点)

❌ 1. 忘写 break

👉 导致 case 穿透


❌ 2. case 必须是常量

int a = 1;
case a: // ❌ 错误(必须是常量)


❌ 3. switch 不能做范围判断

case score > 90: // ❌ 错误


❌ 4. if 判断顺序错误

if (score >= 60)
else if (score >= 80) // ❌ 永远不会执行


七、进阶技巧(精通关键)

⭐ 1. switch + 枚举(强烈推荐)

enum Day { MON, TUE, WED }

switch (day) {
    case MON -> System.out.println("周一");
}


⭐ 2. switch 替代 if 链(提升性能 + 可读性)


⭐ 3. 利用“贯穿”做简化逻辑

(高级技巧)

case 1:
case 2:
case 3:


八、总结一句话

👉 if 和 switch 的本质区别:

if 用来“判断条件”,switch 用来“匹配值”


如果你想继续进阶,我可以帮你👇
✅ 出一套「if & switch 面试高频题」
✅ 或做「代码改错专项训练(超有用)」

文章已创建 5186

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部