1. 什么是分支结构?—— 给程序装上“大脑”

想象一下,你早上出门前会做什么?是不是会先看看窗外?如果下雨了,你就带上伞;如果没下雨,你就不带。这个“如果…就…”的思考过程,就是条件判断

在编程里,我们把这种“根据不同情况,执行不同操作”的结构,叫做分支结构。它就像是给程序装上了“大脑”,让程序能根据我们设定的条件,做出聪明的选择。

今天,我们只学习分支结构中最基础、最简单的一种:单 if 分支。它只关心一种情况:“如果条件成立,我就做某件事”。至于“条件不成立怎么办?”,它不管,直接跳过。这就像你只关心“如果下雨就带伞”,不下雨你什么都不用做,直接出门。

2. 单 if 分支的“语法公式”

在 Java 中,单 if 分支的写法就像一个固定的“公式”:

if (条件) {
    // 条件成立时,要执行的代码
}

我们来拆解一下这个“公式”:

  • if:关键字,意思是“如果”。告诉程序:“我要开始做条件判断了”。
  • (条件):一对小括号,里面放的是一个布尔表达式(别怕,大白话就是:一个结果是“真”或“假”的式子)。比如 score >= 60(分数大于等于60吗?),isRaining == true(正在下雨吗?)。
  • { }:一对大括号,里面包裹着条件成立时,要执行的所有代码。这个大括号就像一个“保护罩”,把要执行的代码包起来。

执行逻辑(通俗版):
程序会先看看小括号里的“条件”是“真”还是“假”。

  • 条件为真:程序就会走进大括号 { } 里面,把里面的代码按顺序执行一遍
  • 条件为假:程序会直接跳过整个大括号 { },就像没看见它一样,继续执行后面的代码。

下面用流程图直观展示单 if 分支的执行流程:

条件为真 (true)

条件为假 (false)

开始执行

条件判断
if (条件)

执行 if 代码块
// 条件成立时的代码

继续执行后续代码

跳过 if 代码块

程序继续执行

流程图解读:

  1. 开始执行 → 程序运行到 if 语句
  2. 条件判断 → 计算括号内的条件表达式,得到 true 或 false
  3. 分支选择
    • 如果为 true:进入"执行 if 代码块"路径,执行大括号内的所有代码
    • 如果为 false:进入"跳过 if 代码块"路径,直接跳过大括号
  4. 汇合点 → 无论走哪条路径,最后都会"继续执行后续代码"
  5. 程序继续 → 执行 if 语句之后的代码

3. 生活场景示例 + 可运行代码

光说不练假把式,我们来看两个生活中的例子,并写出完整的 Java 程序。

示例一:判断考试是否及格

场景:老师批改试卷,分数大于等于60分才算及格,及格了就在成绩单上打印“恭喜及格!”。

public class ScoreCheck {
    public static void main(String[] args) {
        int score = 75; // 假设这次考了75分

        System.out.println("你的分数是:" + score);

        // 单 if 判断:如果分数 >= 60,就打印恭喜信息
        if (score >= 60) {
            System.out.println("恭喜及格!");
        }

        System.out.println("成绩单处理完毕。");
    }
}

运行结果:

你的分数是:75
恭喜及格!
成绩单处理完毕。

如果我们把 score 改成 55,再次运行:

你的分数是:55
成绩单处理完毕。

看!因为 55 >= 60 这个条件是“假”的,所以 if 大括号里的 System.out.println("恭喜及格!"); 被直接跳过了,程序只执行了 if 前后的打印语句。

示例二:判断出门是否要带伞

场景:用一个布尔变量 isRaining 表示是否在下雨,如果为真,就提示带伞。

public class WeatherCheck {
    public static void main(String[] args) {
        boolean isRaining = true; // true 代表正在下雨

        System.out.println("准备出门...");

        // 单 if 判断:如果正在下雨,就提示带伞
        if (isRaining) {
            System.out.println("外面正在下雨,请带伞!");
        }

        System.out.println("出门啦!");
    }
}

运行结果(isRaining = true时):

准备出门...
外面正在下雨,请带伞!
出门啦!

如果 isRaining = false,结果则是:

准备出门...
出门啦!

程序跳过了带伞的提示。

4. 新手专属“避坑指南”

刚开始写 if 语句,几乎每个人都会踩下面这几个坑。别担心,看完你就免疫了!

坑一:if 括号后面误加分号 ;

错误代码:

if (score >= 60); { // 注意这里有个多余的分号!
    System.out.println("恭喜及格!");
}

错误效果: 这个分号 ; 代表一个空语句。程序会理解成:“如果分数及格,就执行一个空操作(分号)”。然后,无论条件是否成立,后面大括号里的打印语句都会被执行!这完全违背了我们的初衷。

正确写法: if 那一行的末尾绝对不能有分号

if (score >= 60) { // 括号后面直接接大括号
    System.out.println("恭喜及格!");
}

坑二:赋值 = 与判断 == 傻傻分不清

这是最经典的错误,没有之一!

  • = 是赋值运算符,意思是“把右边的值,交给左边的变量”。
  • == 才是比较运算符,意思是“判断左右两边是否相等”。

错误代码:

int number = 10;
if (number = 5) { // 错误!这里本意是想判断 number 是否等于5
    System.out.println("number 是 5");
}

编译器会报错! 因为 number = 5 这个式子的结果是 5(一个整数),而 if 的条件必须是一个布尔值(truefalse)。Java 编译器很严格,不允许这样写。

正确写法:

int number = 10;
if (number == 5) { // 使用两个等号 == 进行比较
    System.out.println("number 是 5");
}

坑三:遗漏大括号 {},导致逻辑混乱

错误代码:

int score = 55;
if (score >= 60)
    System.out.println("恭喜及格!"); // 只有这一行属于if
    System.out.println("奖励一朵小红花"); // 这一行其实不属于if!

错误效果:if 后面只有一条语句时,Java 允许你不写大括号 {}。但是,if 的控制范围只到第一个分号结束。所以上面的代码等价于:

if (score >= 60) {
    System.out.println("恭喜及格!");
}
System.out.println("奖励一朵小红花"); // 这行无论如何都会执行!

即使没及格,也会打印“奖励一朵小红花”,这逻辑就乱了。

最佳实践(强烈建议):无论 if 后面有几行代码,都老老实实加上大括号 {}

int score = 55;
if (score >= 60) {
    System.out.println("恭喜及格!");
    System.out.println("奖励一朵小红花"); // 这行现在也受if控制了
}

这样,代码块清晰,永远不会出错。

5. 总结:什么时候用单 if 分支?

记住一个核心原则:当你只需要关心“如果条件满足,就做某事”,而没有“否则(else)要做什么”的时候,就用单 if

典型适用场景:

  • 安全检查:如果用户未登录,就跳转到登录页面。
  • 数据验证:如果输入为空,就提示用户重新输入。
  • 状态触发:如果游戏角色生命值低于10%,就播放警告音效。
  • 权限判断:如果是管理员,就显示“删除”按钮。

它就像是一个“开关”,条件成立就“打开”执行一段代码,不成立就“关闭”跳过。简单、直接、有效。

恭喜你!已经掌握了编程中第一个能让你程序“思考”的工具。下次,我们再学习当条件不成立时,该用 if-else 来做什么。


参考答案:

public class TemperatureCheck {
    public static void main(String[] args) {
        // 定义温度变量
        int temperature = 28; // 可以修改这个值测试不同情况
        
        // 使用单 if 分支判断温度是否高于30度
        if (temperature > 30) {
            System.out.println("天气炎热,注意防暑!");
        }
        
        // 输出当前温度值
        System.out.println("当前温度:" + temperature + "°C");
    }
}

运行结果示例:

  1. 当 temperature = 28 时:
当前温度:28°C

(条件 temperature > 30 不成立,所以没有打印"天气炎热,注意防暑!")

  1. 当 temperature = 35 时:
天气炎热,注意防暑!
当前温度:35°C

(条件 temperature > 30 成立,所以先打印了警告信息)

代码说明:

  • 第3行:定义变量 temperature 并赋初值
  • 第6-8行:使用 if (temperature > 30) 进行条件判断
  • 第11行:无论条件是否成立,都会执行这行,显示当前温度值
  • 你可以尝试修改第3行的温度值,观察不同的输出结果

小练习: 尝试自己写一个程序,定义一个变量 temperature 表示温度,如果温度高于30度,就打印“天气炎热,注意防暑!”。看看你能不能独立写出来并运行成功。

6. 进阶预告:if-else 分支

恭喜你掌握了单 if 分支!你已经学会了让程序在条件成立时执行特定操作。但现实世界往往更复杂:我们不仅需要处理“如果…就…”,还需要处理“否则…就…”。

if-else 结构:二选一的决策

if-else 是单 if 的自然延伸,它让程序能够在两种互斥的情况中做出选择:

if (条件) {
    // 条件成立时执行的代码
} else {
    // 条件不成立时执行的代码
}

与单 if 的核心区别

结构 执行逻辑 适用场景
单 if 条件成立 → 执行代码块
条件不成立 → 跳过代码块
只需要处理“成立”的情况
if-else 条件成立 → 执行 if 代码块
条件不成立 → 执行 else 代码块
两种情况都需要处理

生活场景示例:根据分数判断是否及格

假设我们要判断考试成绩是否及格(60分及以上为及格):

public class ScoreCheck {
    public static void main(String[] args) {
        int score = 75; // 可以修改这个分数测试
        
        if (score >= 60) {
            System.out.println("恭喜!成绩及格!");
        } else {
            System.out.println("很遗憾,成绩不及格,需要继续努力。");
        }
    }
}

运行结果:

  • score = 75 时:输出 "恭喜!成绩及格!"
  • score = 55 时:输出 "很遗憾,成绩不及格,需要继续努力。"

为什么需要 if-else?

if 只能处理“成立”的情况,但很多时候我们需要对“不成立”的情况也做出响应:

  • 登录验证:密码正确 → 进入系统;密码错误 → 提示错误
  • 年龄判断:满18岁 → 允许访问;未满18岁 → 限制访问
  • 成绩评定:及格 → 显示通过;不及格 → 显示重修

掌握了 if-else,你的程序就能做出更智能的“二选一”决策,让代码逻辑更加完整和健壮!

更多推荐