您的位置:

Java中switch语句的使用方法

一、基本语法

switch语句是Java中的一种流程控制语句,可以根据表达式的值,匹配相应的case分支执行对应代码。其基本语法如下:

    switch(expression){
    case value1:
        //执行代码块1
        break;
    case value2:
        //执行代码块2
        break;
    ...
    default:
        //执行默认代码块
    }

其中expression为表达式,value1、value2为常量值。case分支可以有多个,对应不同的常量值。当expression的值与某个case的常量值相等时,该case分支中的代码块将被执行。default分支可选,当所有case分支都不满足时,将执行default分支中的代码块。

二、兼容性问题

在Java SE 5.0版本之前,switch语句只能使用枚举类型、整数类型(byte、short、char、int)和String类型作为表达式。在Java SE 7版本之后,switch语句可以使用枚举类型、整数类型、String类型以及对应包装类和枚举类型的可转换类型,比如byte、short、char、int。

需要注意的是,对于可转换类型,Java会先将其转换为对应整数类型(int、byte、short),然后再进行匹配判断。如果表达式的类型不符合要求,编译器将报错。

三、switch语句的注意事项

1、case分支的常量值不能重复

如下例子:

    int i = 1;
    switch(i){
    case 1:
        //执行代码块1
        break;
    case 1:
        //执行代码块2
        break;
    }

由于case常量值重复,编译器将报错。

2、case分支中不能有重复代码

如下例子:

    int i = 1;
    switch(i){
    case 1:
        //执行代码块1
        break;
    case 2:
        //执行代码块1
        break;
    }

由于case分支存在重复代码,编译器将报错。

3、case分支的顺序

case分支的顺序不会影响表达式的值与常量值的匹配,但是顺序的改变会影响程序的效率。在选择case分支的常量值时,应该把最可能出现的常量值放在前面,以提高程序的效率。

四、示例代码

下面是一个使用switch语句的示例代码:

    public class SwitchDemo {
        public static void main(String[] args) {

            int month = 8;
            String monthString;
            switch (month) {
                case 1:  monthString = "January";
                         break;
                case 2:  monthString = "February";
                         break;
                case 3:  monthString = "March";
                         break;
                case 4:  monthString = "April";
                         break;
                case 5:  monthString = "May";
                         break;
                case 6:  monthString = "June";
                         break;
                case 7:  monthString = "July";
                         break;
                case 8:  monthString = "August";
                         break;
                case 9:  monthString = "September";
                         break;
                case 10: monthString = "October";
                         break;
                case 11: monthString = "November";
                         break;
                case 12: monthString = "December";
                         break;
                default: monthString = "Invalid month";
                         break;
            }
            System.out.println("Month " + month + " is " + monthString);
        }
    }

以上代码是一个根据月份输出月份名称的程序。在switch语句的表达式中,变量month的值为8。根据case分支中的常量值,匹配到case 8分支,执行其中打印字符串的代码块,输出"Month 8 is August"。