
下面是一份系统化讲解的Java 分支结构if 与 switch详解从基础到进阶一步讲清 一、什么是分支结构分支结构用于根据条件选择执行不同代码路径。 核心思想“条件成立 → 执行A否则 → 执行B”二、if 语句最常用1️⃣ 基本结构if(条件){// 条件为 true 执行}例子intage18;if(age18){System.out.println(成年人);}2️⃣ if - elseif(条件){// true}else{// false}例子if(age18){System.out.println(成年人);}else{System.out.println(未成年人);}3️⃣ if - else if - else多分支if(条件1){}elseif(条件2){}elseif(条件3){}else{}例子intscore85;if(score90){System.out.println(优秀);}elseif(score80){System.out.println(良好);}elseif(score60){System.out.println(及格);}else{System.out.println(不及格);}4️⃣ 嵌套 ifif(条件1){if(条件2){// 嵌套逻辑}}例子if(age18){if(age60){System.out.println(在职年龄);}}⚠️ if 使用注意点① 条件必须是 booleanif(1)// ❌ 错误Java不允许② 大括号建议不省略if(age18)System.out.println(A);System.out.println(B);// ⚠️ 实际不会受if控制③ 判断顺序很重要性能 正确性if(obj!nullobj.length()0)三、switch 语句多值判断1️⃣ 基本结构传统写法switch(表达式){case值1:// 代码break;case值2:// 代码break;default:// 默认}例子intday3;switch(day){case1:System.out.println(周一);break;case2:System.out.println(周二);break;case3:System.out.println(周三);break;default:System.out.println(其他);}2️⃣ break 的作用重点 防止“贯穿fall-through”intx2;switch(x){case1:System.out.println(1);case2:System.out.println(2);case3:System.out.println(3);}输出2 3 因为没有break3️⃣ 多 case 合并switch(day){case1:case2:case3:System.out.println(工作日);break;case6:case7:System.out.println(周末);break;}4️⃣ 支持的数据类型支持byte / short / int / charStringJava 7enum❌ 不支持switch(1.5)// double ❌5️⃣ switch 新写法Java 12 推荐更简洁intday3;switch(day){case1-System.out.println(周一);case2-System.out.println(周二);case3-System.out.println(周三);default-System.out.println(其他);}6️⃣ switch 表达式可返回值intday3;Stringresultswitch(day){case1-周一;case2-周二;case3-周三;default-其他;};四、if vs switch核心对比对比点ifswitch判断类型任意 boolean 表达式固定值匹配范围判断✅ 支持如 ❌ 不支持多值判断❌ 冗长✅ 简洁可读性复杂条件更清晰多分支更清晰性能一般多分支更优可能优化为跳表五、什么时候用 if什么时候用 switch✅ 用 if 的场景范围判断如成绩区间复杂逻辑条件、||非固定值判断 示例if(score90)✅ 用 switch 的场景固定值匹配菜单、状态码多个离散值 示例switch(status)六、常见坑面试重点❌ 1. 忘写 break 导致 case 穿透❌ 2. case 必须是常量inta1;casea:// ❌ 错误必须是常量❌ 3. switch 不能做范围判断casescore90:// ❌ 错误❌ 4. if 判断顺序错误if(score60)elseif(score80)// ❌ 永远不会执行七、进阶技巧精通关键⭐ 1. switch 枚举强烈推荐enumDay{MON,TUE,WED}switch(day){caseMON-System.out.println(周一);}⭐ 2. switch 替代 if 链提升性能 可读性⭐ 3. 利用“贯穿”做简化逻辑高级技巧case1:case2:case3:八、总结一句话 if 和 switch 的本质区别if 用来“判断条件”switch 用来“匹配值”如果你想继续进阶我可以帮你✅ 出一套「if switch 面试高频题」✅ 或做「代码改错专项训练超有用」