本文是《Java 入门指南》的第十三篇文章,介绍了 Java 的 switch case 语句。

switch case 语句

定义:

switch(varname){
    case value: 
        //语句
        break; //可选
    case value: 
        //语句
        break; //可选
    case value: 
        //语句
        break; //可选
    default: //可选                    
}

switch 语句中的变量类型可以是 byte、short、int、char、String。

switch 语句支持 String 类型的变量,同时 case 标签必须是字符串常量或字面量,这是 Java 7 的新特性。

switch 语句有若干个 case 语句,每一个 case 语句后有一个值和 :,而 case 语句后面的 break 是可选的。

switch 语句最多有1个 default 语句,一般是 switch 语句的最后一个分支,default 语句不需要 break。

switch 语句依次向下执行,switch 语句中的变量值会依次匹配 case 语句中的常量值,直到第一次匹配成功为止。

第一次匹配成功后,如果 case 语句后有 break,会跳出这个循环。如果 case 语句后没有 break,会继续执行下一个 case 语句(无论是否相互匹配),直到跳出或结束这个循环为止,这种现象被称为 "case 穿透"。

为了避免出现 "case 穿透" 现象,建议每个 case 语句后加上 break。

实例:

示例代码:

package com.jianrry.test;

//导入 java.util.Scanner 类。
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        System.out.println("请输入你的评级(A-F):");

        //创建一个 Scanner 对象,用于接收用户的输入。
        Scanner scanner=new Scanner(System.in);

        //定义一个 String 类型的变量 grade,用于接收用户输入的字符串。
        String grade=scanner.nextLine();

        switch (grade){

            case "A":
                System.out.println("你的成绩优秀!");
                break;

            case "B":
                System.out.println("你的成绩良好!");
                break;

            case "C":
                System.out.println("你的成绩及格!");
                break;

            default:
                System.out.println("你的成绩未知!");

        }

        //关闭 Scanner 对象,避免资源的浪费。
        scanner.close();

    }

}

测试数据:

//测试数据1
A

//测试数据2
B

//测试数据3
F

运行结果:

//运行结果1
请输入你的评级(A-F):
A
你的成绩优秀!

//运行结果2
请输入你的评级(A-F):
B
你的成绩良好!

//运行结果3
请输入你的评级(A-F):
F
你的成绩未知!

示例代码(case 穿透):

package com.jianrry.test;

//导入 java.util.Scanner 类。
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        System.out.println("请输入你的评级(A-F):");

        //创建一个 Scanner 对象,用于接收用户的输入。
        Scanner scanner=new Scanner(System.in);

        //定义一个 String 类型的变量 grade,用于接收用户输入的字符串。
        String grade=scanner.nextLine();

        switch (grade){

            case "A":
                System.out.println("你的成绩优秀!");
                break;

            case "B":
                System.out.println("你的成绩良好!");

            case "C":
                System.out.println("你的成绩及格!");

            default:
                System.out.println("你的成绩未知!");

        }

        //关闭 Scanner 对象,避免资源的浪费。
        scanner.close();

    }

}

测试数据:

//测试数据1
A

//测试数据2
B

//测试数据3
F

运行结果:

//运行结果1
请输入你的评级(A-F):
A
你的成绩优秀!

//运行结果2
请输入你的评级(A-F):
B
你的成绩良好!
你的成绩及格!
你的成绩未知!

//运行结果3
请输入你的评级(A-F):
F
你的成绩未知!