news 2026/4/5 18:24:54

【Java SE 基础学习打卡】22 分支结构 - if

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java SE 基础学习打卡】22 分支结构 - if

目录

  • 前言
  • 一、先搞懂:if 语句的核心逻辑
  • 二、逐个攻破:3 种 if 语句用法(语法 + 例子 + 流程图)
    • 2.1 单分支 if:满足条件才做事,不满足就跳过
    • 2.2 双分支 if-else:二选一,必执行其中一个
    • 2.3 多分支 if-else if-else:多选一,按顺序匹配
  • 三、语法细节补充:这些 “小规则” 决定代码是否能跑通
    • 3.1 条件表达式的合法类型
    • 3.2 代码块的作用域
    • 3.3 分号的 “坑”
  • 四、小白必避的 5 个 “致命坑”
    • 4.1 坑 1:条件里用`=`代替`==`(最常见)
    • 4.2 坑 2:省略大括号导致代码 “失控”
    • 4.3 坑 3:多分支条件顺序写反(逻辑混乱)
    • 4.4 坑 4:嵌套 if 的 else 匹配错误
  • 总结

前言

上一节咱们聊到流程控制里的 “分支结构” 就像给程序装了个 “决策大脑”,而if语句就是这个大脑最核心的 “思考工具”。比如 “如果体温超过 37.3℃就需要复测”“如果余额不足就提示充值”“如果考试分数够高就评优秀”,这些生活中随处可见的判断场景,用if语句都能轻松实现。

这一节咱们把if拆解得明明白白:先吃透核心逻辑,再逐个攻破三种分支用法(单分支、双分支、多分支),每个知识点都配超详细语法说明生活化例子直观流程图,最后汇总新手必避的 “致命坑”—— 保证刚学完变量和运算符的你,不仅会用,还能避开 90% 的错误!

一、先搞懂:if 语句的核心逻辑

if语句的本质,就是模拟人类的 “判断思维”——先设定一个 “判断条件”,再明确 “条件成立时做什么”“条件不成立时做什么”

举个生活里的例子:你打算周末出游,会先判断 “天气是否晴朗”(条件):

  • 条件成立(晴朗)→ 去公园野餐(执行 A 操作);

  • 条件不成立(下雨)→ 在家看电影(执行 B 操作)。

对应到 Java 里,if语句的核心逻辑可以浓缩成一句话:

条件为true(成立),就走 “成立” 的代码路;条件为false(不成立),就走 “不成立” 的代码路(或跳过)。

这里有两个关键前提,小白必须记牢:

  1. 「条件」必须是 “布尔表达式”—— 也就是能明确算出truefalse的式子,比如age > 18score == 100,不能是数字、字符串(比如if (5)if ("晴天")都是错的);

  2. 「执行代码」必须用{ }包裹 —— 哪怕只有一行代码,也建议加{ },否则会出现代码 “失控” 的情况(后面避坑部分会详细说)。

二、逐个攻破:3 种 if 语句用法(语法 + 例子 + 流程图)

if语句有三种核心用法,从简单到复杂逐步升级,覆盖所有日常判断场景。每种用法都先给 “死记硬背” 的语法模板,再配生活例子和代码,最后用流程图直观展示执行路径。

2.1 单分支 if:满足条件才做事,不满足就跳过

适用场景:只需要在 “条件成立” 时执行操作,不成立就啥也不做(或执行后续无关代码)。

语法模板(必须记牢)

if(条件表达式){// 代码块:条件成立时才执行(1行或多行都可以)}// 条件不成立时,直接跳过代码块,执行这里的代码(不受if控制)

语法细节补充

  • (条件表达式):括号不能省略!里面必须是布尔表达式(结果true/false),比如pocketMoney > 50isStudent == true

  • { }:称为 “代码块”,包裹的代码是一个整体 —— 条件成立时,会把代码块里的所有代码都执行一遍;

  • 代码块后面不用加;if语句的结束标志是代码块的},不是;,加了;会导致逻辑错误(比如if (a>10); { ... },代码块会无条件执行)。

生活场景:如果零花钱超过 50 元,就买一本漫画书

publicstaticvoidmain(String[]args){// 定义变量:当前零花钱(单位:元)——之前学的int类型intpocketMoney=60;// 单分支if判断:如果零花钱>50,就执行买漫画的代码if(pocketMoney>50){// 条件:零花钱超过50元(true)System.out.println("零花钱够啦~");System.out.println("买一本《海贼王》漫画书!");System.out.println("剩下的钱买瓶可乐~");}// 不管条件成立与否,都会执行这句话(不受if控制)System.out.println("回家啦~");}

执行结果(60>50 成立):

零花钱够啦~ 买一本《海贼王》漫画书! 剩下的钱买瓶可乐~ 回家啦~

流程图(直观看懂执行路径)

小改动测试

如果把pocketMoney改成 40(条件不成立),执行结果会变成:

回家啦~

if代码块里的内容全被跳过。

2.2 双分支 if-else:二选一,必执行其中一个

适用场景:需要明确 “条件成立” 和 “条件不成立” 的两种操作,比如 “及格就玩,不及格就刷题”“有票就进场,没票就离开”—— 没有第三种选择。

语法模板(必须记牢)

if(条件表达式){// 代码块1:条件成立时执行}else{// 代码块2:条件不成立时执行}

语法细节补充

  • else:意思是 “否则”,后面没有括号,也没有条件 —— 它永远对应 “前面if条件不成立” 的情况;

  • 二选一规则:代码块 1 和代码块 2 “必执行且仅执行一个”,不会都执行,也不会都不执行;

  • else后面的{ }同样不能省:哪怕代码块 2 只有一行代码,省了{ }可能导致后续代码失控。

生活场景:如果考试及格(≥60 分),就出去玩;否则在家刷题

publicstaticvoidmain(String[]args){// 定义变量:考试分数——之前学的int类型intexamScore=58;// 双分支判断:及格与否二选一if(examScore>=60){// 条件:分数≥60(false)System.out.println("分数:"+examScore+"分");System.out.println("及格啦!约同学去打球~");}else{// 条件不成立时执行System.out.println("分数:"+examScore+"分");System.out.println("没及格,在家刷《Java基础100题》~");}}

执行结果(58≥60 不成立):

分数:58分 没及格,在家刷《Java基础100题》~

流程图(直观看懂执行路径)

小改动测试

如果把examScore改成 65(条件成立),执行结果会变成:

分数:65分 及格啦!约同学去打球~

2.3 多分支 if-else if-else:多选一,按顺序匹配

适用场景:有多个条件需要依次判断,比如 “根据分数评等级”“根据月份判断季节”—— 按顺序匹配,只执行第一个成立的条件。

语法模板(必须记牢)

if(条件1){// 代码块1:条件1成立时执行}elseif(条件2){// 代码块2:条件1不成立,但条件2成立时执行}elseif(条件3){// 代码块3:条件1、2都不成立,但条件3成立时执行}else{// 代码块4:所有条件都不成立时执行(可选,可省略)}

语法细节补充

  • 顺序优先:必须按 “条件范围从窄到宽” 或 “优先级从高到低” 排序,比如评等级要先判断 90+(窄范围),再判断 80+,最后判断 60+(宽范围);

  • 唯一执行:只要有一个条件成立,执行对应的代码块后,就会跳过后面所有的else ifelse,不会再判断;

  • else可选:如果所有条件都不成立,且没有else,则多分支语句什么都不执行,直接往下走。

生活场景:根据期末成绩评等级(90 + 优秀,80-89 良好,60-79 及格,<60 不及格)

publicstaticvoidmain(String[]args){// 定义变量:期末成绩——之前学的int类型intfinalScore=85;// 多分支判断:按顺序匹配条件(从窄范围到宽范围)if(finalScore>=90){// 条件1:90+(最窄)System.out.println("成绩:"+finalScore+"分 → 等级:优秀");}elseif(finalScore>=80){// 条件2:80-89(次窄)System.out.println("成绩:"+finalScore+"分 → 等级:良好");}elseif(finalScore>=60){// 条件3:60-79(较宽)System.out.println("成绩:"+finalScore+"分 → 等级:及格");}else{// 所有条件都不成立(<60)System.out.println("成绩:"+finalScore+"分 → 等级:不及格");}}

执行结果(85≥90 不成立,85≥80 成立):

成绩:85分 → 等级:良好

流程图(直观看懂执行路径)

小改动测试

如果把finalScore改成 55(所有条件都不成立),执行结果会变成:

成绩:55分 → 等级:不及格

三、语法细节补充:这些 “小规则” 决定代码是否能跑通

除了上面的核心用法,还有几个语法细节,小白容易忽略,但直接影响代码是否能编译通过:

3.1 条件表达式的合法类型

  • 只能是布尔类型(true/false),以下情况都不合法:

    • 数字类型:if (5)if (score)(错,5 和 score 是 int,不是布尔值);

    • 字符串类型:if ("及格")(错,字符串不能直接作为条件);

    • 赋值语句:if (age = 18)(错,=是赋值,不是判断,结果是 18,不是布尔值)。

  • 合法的条件表达式示例:

    • 关系运算:age > 18score == 100height <= 120

    • 逻辑运算:isStudent && hasID(既是学生又有身份证)、isRain || isWind(下雨或刮风);

    • 布尔变量:if (isPass)(等价于if (isPass == true))、if (!isRain)(等价于if (isRain == false))。

3.2 代码块的作用域

  • 代码块里的变量,只能在代码块内部使用,外部无法访问:

    if(score>=60){Stringresult="及格";System.out.println(result);// 合法,在代码块内}System.out.println(result);// 报错!result是代码块内的变量,外部无法访问
  • 代码块外部的变量,代码块内部可以访问:

    Stringname="小明";if(score>=60){System.out.println(name+"及格了");// 合法,能访问外部变量name}

3.3 分号的 “坑”

  • if后面不能加;:加了;会导致代码块无条件执行(;表示if语句结束):

    if(score>=60);{// 这里加了;,if语句已经结束System.out.println("及格");// 不管score是否≥60,都会执行}
  • 代码块内部的语句需要加;:每个执行语句结尾必须加;,比如System.out.println("及格");

四、小白必避的 5 个 “致命坑”

这 5 个坑是新手最常犯的,每个都附了错误示例、正确示例和后果说明,一定要记牢!

4.1 坑 1:条件里用=代替==(最常见)

  • 错误示例

    intage=18;if(age=18){// 错把赋值“=”当判断“==”System.out.println("成年了");}
  • 后果:编译报错!age = 18是赋值语句,结果是 18(int 类型),而if条件必须是布尔类型(true/false),类型不匹配。

  • 正确示例

    if(age==18){// 用“==”判断是否相等System.out.println("成年了");}

4.2 坑 2:省略大括号导致代码 “失控”

  • 错误示例

    intscore=55;if(score>=60)System.out.println("及格");System.out.println("可以玩游戏");// 不受if控制,永远执行
  • 后果:不管score是否≥60,“可以玩游戏” 都会打印 —— 因为省略{ }时,if只控制紧跟的第一行代码,后面的代码是独立的,不受条件影响。

  • 正确示例

    if(score>=60){System.out.println("及格");System.out.println("可以玩游戏");// 只有条件成立才执行}

4.3 坑 3:多分支条件顺序写反(逻辑混乱)

  • 错误示例

    intscore=85;if(score>=60){// 先判断宽范围(60+),85分会直接匹配System.out.println("及格");}elseif(score>=80){// 永远不会执行!System.out.println("良好");}
  • 后果:85 分明明该评 “良好”,却被当成 “及格”—— 因为条件顺序从宽到窄,先匹配到宽范围,后面的窄范围条件永远没机会判断。

  • 正确示例

    if(score>=80){// 先判断窄范围(80+)System.out.println("良好");}elseif(score>=60){// 再判断宽范围(60+)System.out.println("及格");}

4.4 坑 4:嵌套 if 的 else 匹配错误

  • 错误示例

    inta=3;intb=5;if(a>2)if(b>10)System.out.println("b很大");else// else默认匹配最近的if(即b>10),不是外层的a>2!System.out.println("a不大");
  • 后果:逻辑混乱!else实际匹配的是内层if (b>10),而不是外层if (a>2)—— 当b=5时,b>10不成立,会执行else的 “a 不大”,但a=3明明大于 2,明显矛盾。

  • 正确示例

    if(a>2){// 用大括号明确外层if的范围if(b>10){System.out.println("b很大");}}else{// 明确匹配外层ifSystem.out.println("a不大");}

总结

这一节咱们把if语句的核心逻辑、三种用法、语法细节和避坑指南全讲透了,记住 3 个核心点:

  1. 核心逻辑:if是 “判断工具”,条件true执行对应代码块,false执行 else(或跳过);

  2. 三种用法:单分支(满足才做)、双分支(二选一)、多分支(多选一,顺序优先);

  3. 避坑关键:条件用==不用=、必加大括号、多分支条件从窄到宽排、条件必须是布尔值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 3:33:20

软件卸载工具HiBit Uninstaller下载安装保姆级教程(附官网安装包)

HiBit Uninstaller 是一款专为 Windows 用户打造的“软件卸载系统清理”小工具&#xff0c;体积只有 3 MB 左右&#xff0c;却能把顽固程序、注册表残渣、空文件夹、浏览器插件等一股脑儿扫干净。 HiBit Uninstaller 的界面像资源管理器一样直观。左侧是软件列表&#xff0c;右…

作者头像 李华
网站建设 2026/4/4 0:26:42

流处理系统监控与调优:从入门到专家

流处理系统监控与调优&#xff1a;从入门到专家 引言&#xff1a;当数据开始流动 想象一下&#xff0c;你正站在一条湍急的河流旁。河水奔流不息&#xff0c;携带泥沙、树叶和各种漂浮物。你的任务是实时监测水质、计算流量、识别污染物&#xff0c;并在问题发生时立即做出反应…

作者头像 李华
网站建设 2026/4/3 4:47:00

【MCP AI-102实战指南】:从零到一部署量子模型的7个关键技术点

第一章&#xff1a;量子模型部署的核心挑战与MCP AI-102认证要点在量子计算与人工智能融合的前沿领域&#xff0c;量子模型的部署正面临前所未有的技术挑战。传统机器学习框架难以直接适配量子态的叠加性与纠缠特性&#xff0c;导致模型训练、推理和集成过程复杂度显著上升。环…

作者头像 李华
网站建设 2026/3/28 20:30:50

Scanner 和 System in的应用

package chapter14;import java.util.Scanner;public class KeyBoardDemo {public static void main(String[] args) {Scanner input new Scanner(System.in);while (true) {System.out.println("请输入内容" );String str input.nextLine();if(str.equals("…

作者头像 李华
网站建设 2026/3/27 2:58:26

Wan2.2-T2V-A14B实现海底生物群落生态循环模拟

Wan2.2-T2V-A14B实现海底生物群落生态循环模拟 &#x1f30a; 想象一下&#xff1a;你只需写下一段文字——“阳光斜射入珊瑚礁&#xff0c;小丑鱼在海葵间穿梭&#xff0c;绿海龟缓缓游过&#xff0c;沙丁鱼群如银色闪电般掠动”——几秒钟后&#xff0c;这段描述就变成了一段…

作者头像 李华