Java switch语句

Java switch语句从多个条件中执行一个语句。就像if-else-if语句一样。switch语句适用于byte,short,int,long,enum类型,String类型以及某些包装类型,例如Byte,Short,Int和Long。从Java 7开始,您可以在switch语句中使用String字符串。

switch 语句是 Java 的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。因此,它提供了一个比一系列 if-else-if 语句更好的选择。

1 Java switch语句的语法

switch 语句的基本语法形式如下所示:

switch(表达式) {
    case 值1:
        语句块1;
        break;
    case 值2:
        语句块2;
        break;
    …
    case 值n:
        语句块n;
        break;
    default:
        语句块n+1;
    break;
}
  • switch表达式:表示“开关”,这个开关就是 switch 关键字后面小括号里的值,小括号里要放一个整型变量或字符型变量。表达式必须为 byte,short,int,char类型。

    Java7 增强了 switch 语句的功能,允许 switch 语句的控制表达式是 java.lang.String 类型的变量或表达式。只能是 java.lang.String 类型,不能是 StringBuffer 或 StringBuilder 这两种字符串的类型。

  • case值:只能是switch表达式类型。大小写值必须为文字或常量。它不允许变量。case值必须唯一。如果值重复,则会产生编译时错误。
  • 每个case语句可以有一个break语句,该语句是可选的。当流程到达break语句时,将跳出整个switch语句。如果未找到break语句,则执行下一个case语句。
  • default:表示“默认”,即其他情况都不满足。default 后要紧跟冒号,default 块和 case 块的先后顺序可以变动,不会影响程序执行结果。通常,default 块放在末尾,也可以省略不写。

2 Java switch语句的示例1

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {
    public static void main(String[] args) {
        //声明switch的开关值
        int number=20;
        //switch表达式
        switch(number){
            //case条件
            case 10:
                System.out.println("10");
                break;
            case 20:
                System.out.println("20");
                break;
            case 30:
                System.out.println("30");
                break;
            //default条件
            default:System.out.println("不是10,20,30");
        }
    }
}

输出结果为:

20

3 Java switch语句的示例2

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {
    public static void main(String[] args) {
        //定义month月份至
        int month=7;
        String monthString="";
        //switch表达式
        switch(month){
            //case语句
            case 1:
                monthString="1 - 1月";
                break;
            case 2:
                monthString="2 - 2月";
                break;
            case 3:
                monthString="3 - 3月";
                break;
            case 4:
                monthString="4 - 4月";
                break;
            case 5:
                monthString="5 - 5月";
                break;
            case 6:
                monthString="6 - 6月";
                break;
            case 7:
                monthString="7 - 7月";
                break;
            case 8:
                monthString="8 - 8月";
                break;
            case 9:
                monthString="9 - 9月";
                break;
            case 10:
                monthString="10 - 10月";
                break;
            case 11:
                monthString="11 - 11月";
                break;
            case 12:
                monthString="12 - 12月";
                break;
            default:
                System.out.println("非法月份!");
        }
        //输出月份
        System.out.println(monthString);
    }
}

输出结果为:

7 - 7月

4 Java switch语句的错误用法

如果在switch的case语句中没有使用break。那么程序将从第一个条件执行到最后条件,把条件语句都执行一次。显然这不是我们希望的结果,所以这种情况我们会认为是错误用法。

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {
    public static void main(String[] args) {
        int number=20;
        //switch表达式
        switch(number){
            //没有break的case语句
            case 10:
                System.out.println("10");
            case 20:
                System.out.println("20");
            case 30:
                System.out.println("30");
            default:
                System.out.println("不是10,20,30");
        }
    }
}

输出结果为:

20
30
不是10,20,30

5 switch语句中使用String

从Java 7开始,Java允许我们在switch表达式中使用String字符串类型。case语句也应为String字符串。

switch语句中使用String的示例:

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {
    public static void main(String[] args) {
        //声明一个String变量
        String levelString="Expert";
        int level=0;
        //在switch表达式使用String
        switch(levelString){
            //case语句中也必须是String
            case "Beginner":
                level=1;
                break;
            case "Intermediate":
                level=2;
                break;
            case "Expert":
                level=3;
                break;
            default:
                level=0;
                break;
        }
        System.out.println("Your Level is: "+level);
    }
}

输出结果为:

Your Level is: 3

6 Java 嵌套switch语句

我们可以在Java中的其他switch语句中使用switch语句。这种做法被称为嵌套switch语句。

嵌套switch语句的示例:

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {
    public static void main(String[] args) {
        //C - CSE, E - ECE, M - Mechanical
        char branch = 'C';
        int collegeYear = 4;
        switch (collegeYear) {
            case 1:
                System.out.println("English, Maths, Science");
                break;
            case 2:
                switch (branch) {
                    case 'C':
                        System.out.println("Operating System, Java, Data Structure");
                        break;
                    case 'E':
                        System.out.println("Micro processors, Logic switching theory");
                        break;
                    case 'M':
                        System.out.println("Drawing, Manufacturing Machines");
                        break;
                }
                break;
            case 3:
                switch (branch) {
                    case 'C':
                        System.out.println("Computer Organization, MultiMedia");
                        break;
                    case 'E':
                        System.out.println("Fundamentals of Logic Design, Microelectronics");
                        break;
                    case 'M':
                        System.out.println("Internal Combustion Engines, Mechanical Vibration");
                        break;
                }
                break;
            case 4:
                switch (branch) {
                    case 'C':
                        System.out.println("Data Communication and Networks, MultiMedia");
                        break;
                    case 'E':
                        System.out.println("Embedded System, Image Processing");
                        break;
                    case 'M':
                        System.out.println("Production Technology, Thermal Engineering");
                        break;
                }
                break;
        }
    }
}

输出结果为:

Data Communication and Networks, MultiMedia

7 switch语句中使用枚举

Java允许我们在switch语句中使用枚举。

switch语句中使用枚举的示例:

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {
    //定义枚举类型
    public enum Day {  Sun, Mon, Tue, Wed, Thu, Fri, Sat  }

    public static void main(String[] args) {
        Day[] DayNow = Day.values();
        for (Day Now : DayNow)
        {
            switch (Now)
            {
                case Sun:
                    System.out.println("星期天");
                    break;
                case Mon:
                    System.out.println("星期一");
                    break;
                case Tue:
                    System.out.println("星期二");
                    break;
                case Wed:
                    System.out.println("星期三");
                    break;
                case Thu:
                    System.out.println("星期四");
                    break;
                case Fri:
                    System.out.println("星期五");
                    break;
                case Sat:
                    System.out.println("星期六");
                    break;
            }
        }
    }
}

输出结果为:

星期天
星期一
星期二
星期三
星期四
星期五
星期六

8 switch语句中使用包装类型

Java允许我们在switch语句中使用四个包装类型:Byte,Short,Integer和Long。

switch语句中使用包装类型的示例:

package com.yiidian;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Demo {

    public static void main(String[] args) {
        Integer age = 18;
        switch (age)
        {
            case (16):
                System.out.println("孩子,你还未成年呢");
                break;
            case (18):
                System.out.println("小伙子,你已经成年了");
                break;
            case (65):
                System.out.println("你可以退休环游世界啦");
                break;
            default:
                System.out.println("请提供正确的年龄信息");
                break;
        }
    }
}

输出结果为:

小伙子,你已经成年了

 

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码