Java选择结构详解:if与switch的正确用法及穿透问题

Alice
Alice
发布时间:2026-10-16 | 3人浏览过
原创

掌握Java选择结构是编写逻辑代码的基础。本文将详细解析布尔表达式、if条件判断及switch分支结构,重点说明多重条件的处理方式和switch的case穿透机制,附带完整代码实例与图解演示。

1. 条件判断的基础:布尔表达式

在Java流程控制中,所有的选择结构都依赖于布尔表达式(Boolean expression)。它是一段返回结果仅为true(真)或false(假)的代码声明。最简单的形式通常是等式比较:

2 == 4      // 结果为 false

2. if单选择结构

当只需要在条件满足时执行特定操作,而条件不满足时跳过该操作,应使用if语句。其逻辑如同生活中“如果明天晴天,就去放风筝”的单一判断。

流程图示意:

语法格式如下:

if(布尔表达式){
    // 条件为 true 时执行的代码块
}

第1步:实现字符串匹配的单选择判断

通过接收用户输入并判断是否等于指定字符串,展示基础用法。注意Java中字符串比较必须使用equals()方法而非==。

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入内容:");
        String s = scanner.nextLine();
        if (s.equals("Liusu")) {
            System.out.println("输入的是:" + s);
        }
        System.out.println("End");
        scanner.close();
    }
}

运行效果示意:

3. if双选择结构(if-else)

当需求存在两种互斥的结果(如“余额充足买键盘”或“余额不足不买”),需使用if-else结构进行双向分流。

流程图示意:

语法结构:

if(布尔表达式){
    // 条件为 true
} else {
    // 条件为 false
}

第2步:实现基于金额的双向判断

以下示例判断输入金额是否达到键盘价格108元:

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入x值(金额):");
        int x = scanner.nextInt();
        if (x >= 108) {
            System.out.println("购买键盘");
        } else {
            System.out.println("余额正在加载中...");
        }
        scanner.close();
    }
}

运行效果示意:

4. if多选择结构(if-else if-else)

当存在多个区间或多重状态需要区分时(如成绩等级判定),需使用多分支结构。一个if块后只能跟随一个else,但可以有任意数量的else if。

流程图示意:

核心规则:

  • 从上至下依次判断,一旦某个else if条件成立,后续分支将全部跳过。
  • 若所有条件均不满足,则执行最后的else默认分支。

第3步:多数值精准判断实例

public class Test {
    public static void main(String args[]) {
        int x = 66;
        if (x == 22) {
            System.out.print("x:22");
        } else if (x == 44) {
            System.out.print("x:44");
        } else if (x == 66) {
            System.out.print("x:66");
        } else {
            System.out.print("看来您的选择不在选项当中...");
        }
    }
}

运行效果示意:

5. 嵌套的if结构

Java支持在所有流程控制语句内部再次嵌套其他控制语句。这适用于需要在满足外层条件后,进一步细化内层条件的场景。

if(外层条件){
    // 执行外层代码
    if(内层条件){
        // 执行内层代码
    }
}

第4步:双重条件验证实例

先判断大于22,再在内层判断是否大于44:

public static void main(String args[]) {
    int x = 66;
    if (x > 22) {
        System.out.println("x>22");
        if(x > 44) {
            System.out.println("x>44");
        }
    }
}

运行效果示意:

6. switch多选择结构

对于变量的离散取值判断(如枚举值、字符、整数常量),switch-case结构通常比多重if-else if更清晰高效。switch支持byte、short、int、char和String类型。

第5步:字符等级评定示例

演示基本的分支跳转与默认值处理:

public static void main(String args[]) {
    char grade = 'C';
    switch(grade) {
        case 'A' :
            System.out.println("优秀");
            break;
        case 'B' :
        case 'C' : // 多个case共用同一逻辑
            System.out.println("良好");
            break;
        case 'D' :
            System.out.println("及格");
            break;
        case 'F' :
            System.out.println("谢谢参与!加油!");
            break;
        default :
            System.out.println("您的等级已不在该范围内...");
    }
    System.out.println("你的等级是 " + grade);
}

运行效果示意:

7. 关键概念:Case穿透现象

在使用switch时,如果没有在case末尾添加break语句,程序不会自动跳出,而是继续执行下一个case的代码块,这种现象称为“穿透”。只有在遇到break、方法结束或最后无case时才停止。

第6步:观察无break时的穿透行为

public static void main(String args[]) {
    int i = 4;
    switch(i) {
        case 0:
            System.out.println("0");
        case 1:
            System.out.println("1");
        case 2:
            System.out.println("2");
        case 3:
            System.out.println("3");
        case 4:
            System.out.println("4");
        case 5:
            System.out.println("5");
            break;
        default:
            System.out.println("default");
    }
}

由于i=4匹配case 4且无break,输出将从4一直延续到5。运行效果示意:

以上就是Java选择结构中if与switch相关用法的详细内容,更多关于Java条件分支与流程控制的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表