Java的switch语句用于根据多个条件执行一条语句,类似于if-else-if阶梯语句。switch语句适用于byte、short、int、long、枚举类型、String以及一些包装类型,如Byte、Short、Int和Long。从Java 7开始,您还可以在switch语句中使用字符串。

换句话说,switch语句通过测试一个变量与多个值的相等性来确定执行哪个代码块。

以下是需要记住的要点:

  • switch表达式可以有一个或多个case值。
  • case值只能是与switch表达式类型相匹配的常量或字面值。不允许使用变量作为case值。
  • 每个case值必须是唯一的,重复的case值会导致编译错误。
  • Java的switch表达式可以是byte、short、int、long(及其包装类)、枚举和字符串类型。
  • 每个case语句可以包含一个可选的break语句。当控制流程到达break语句时,会跳出switch语句。如果没有break语句,将会继续执行下一个case。
  • switch语句可以有一个可选的default标签,用于处理所有未匹配到的情况。

句法:

switch(expression){    
case value1:    
  //要执行的代码;    
 break;
case value2:    
  //要执行的代码; 
 break;
......    
    
default:     
  code to be executed if all cases are not matched;  
}    

Switch语句流程图

java-switch-statement.png

例子:

SwitchExample.java

public class SwitchExample {  
public static void main(String[] args) {  
     //为switch表达式声明一个变量  
    int number=20;  
     //切换表达式  
    switch(number){   
    case 10: System.out.println("10");  
    break;  
    case 20: System.out.println("20");  
    break;  
    case 30: System.out.println("30");  
    break;  
    //默认case语句 
    default:System.out.println("Not in 10, 20 or 30");  
    }  
    }  
}  

输出:

20

查找月份示例:

SwitchMonthExample.javaHTML

//Java程序演示Switch语句的例子  
//我们在这里打印给定数字的月份名称  
public class SwitchMonthExample {    
public static void main(String[] args) {    
    //指定月数 
    int month=7;    
    String monthString="";   
    switch(month){    
    // switch 块中的 case 语句  
    case 1: monthString="1 - January";  
    break;    
    case 2: monthString="2 - February";  
    break;    
    case 3: monthString="3 - March";  
    break;    
    case 4: monthString="4 - April";  
    break;    
    case 5: monthString="5 - May";  
    break;    
    case 6: monthString="6 - June";  
    break;    
    case 7: monthString="7 - July";  
    break;    
    case 8: monthString="8 - August";  
    break;    
    case 9: monthString="9 - September";  
    break;    
    case 10: monthString="10 - October";  
    break;    
    case 11: monthString="11 - November";  
    break;    
    case 12: monthString="12 - December";  
    break;    
    default:System.out.println("Invalid Month!");    
    }    
     //打印给定数字的月份  
    System.out.println(monthString);  
    }    
}   

输出:

7 - 七月

SwitchVowelExample.java

public class SwitchVowelExample {    
public static void main(String[] args) {    
    char ch='O';    
    switch(ch)  
    {  
        case 'a':   
            System.out.println("Vowel");  
            break;  
        case 'e':   
            System.out.println("Vowel");  
            break;  
        case 'i':   
            System.out.println("Vowel");  
            break;  
        case 'o':   
            System.out.println("Vowel");  
            break;  
        case 'u':   
            System.out.println("Vowel");  
            break;  
        case 'A':   
            System.out.println("Vowel");  
            break;  
        case 'E':   
            System.out.println("Vowel");  
            break;  
        case 'I':   
            System.out.println("Vowel");  
            break;  
        case 'O':   
            System.out.println("Vowel");  
            break;  
        case 'U':   
            System.out.println("Vowel");  
            break;  
        default:   
            System.out.println("Consonant");  
    }  
    }    
}   

输出:

Vowel

Java Switch 语句是 fall-through

Java switch 语句是失败的。这意味着如果不存在 break 语句,它将在第一个匹配项之后执行所有语句。

例子:

SwitchExample2.java

//我们省略的Java Switch示例 
//中断语句  
public class SwitchExample2 {  
public static void main(String[] args) {  
    int number=20;  
    //带有int值的switch表达式  
    switch(number){  
    //没有break语句的switch case
    case 10: System.out.println("10");  
    case 20: System.out.println("20");  
    case 30: System.out.println("30");  
    default:System.out.println("Not in 10, 20 or 30");  
    }  
}  
}  

输出:

20
30
Not in 10, 20 or 30

带有字符串的 Java Switch 语句

从 Java SE 7 开始,Java 允许我们在 switch 表达式中使用字符串。case 语句应该是字符串文字。

例子:

SwitchStringExample.java

//Java程序演示Java Switch的使用 
//带字符串的语句
public class SwitchStringExample {    
public static void main(String[] args) {    
    //声明字符串变量 
    String levelString="Expert";  
    int level=0;  
    //在Switch表达式中使用String 
    switch(levelString){    
    //在 Switch case 中使用字符串文字 
    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

Java 嵌套 Switch 语句

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

例子:

NestedSwitchExample.java

//Java程序演示Java Nested Switch的使用 
public class NestedSwitchExample {    
    public static void main(String args[])  
      {  
      //C - CSE,E - ECE,M - 机械 
        char branch = 'C';                 
        int collegeYear = 4;  
        switch( collegeYear )  
        {  
            case 1:  
                System.out.println("英语、数学、科学");  
                break;  
            case 2:  
                switch( branch )   
                {  
                    case 'C':  
                        System.out.println("操作系统, Java, 数据结构");  
                        break;  
                    case 'E':  
                        System.out.println("微处理器,逻辑切换理论");  
                        break;  
                    case 'M':  
                        System.out.println("绘图,制造机器");  
                        break;  
                }  
                break;  
            case 3:  
                switch( branch )   
                {  
                    case 'C':  
                        System.out.println("计算机组织,多媒体");  
                        break;  
                    case 'E':  
                        System.out.println("逻辑设计基础,微电子学");  
                        break;  
                    case 'M':  
                        System.out.println("内燃机,机械振动");  
                        break;  
                }  
                break;  
            case 4:  
                switch( branch )   
                {  
                    case 'C':  
                        System.out.println("数据通信和网络,多媒体");  
                        break;  
                    case 'E':  
                        System.out.println("嵌入式系统,图像处理");  
                        break;  
                    case 'M':  
                        System.out.println("生产技术,热能工程");  
                        break;  
                }  
                break;  
        }  
    }  
}  

输出:

数据通信和网络,多媒体

Switch 语句中的 Java 枚举

在Java中,我们可以在switch语句中使用枚举。Java的枚举是表示一组常量的类,它们是不可变的,类似于最终变量。我们使用关键字"enum",并将常量放在用逗号分隔的花括号中。

换句话说,枚举提供了一种方便的方式来定义一组相关的常量,并在代码中使用它们。当我们需要在有限的选项中进行选择时,使用枚举可以提高代码的可读性和可维护性。

例子:

JavaSwitchEnumExample.java

//在switch语句中 
//在switch语句中 
public class JavaSwitchEnumExample {      
       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("Sunday");    
                        break;    
                    case Mon:    
                        System.out.println("Monday");    
                        break;    
                    case Tue:    
                        System.out.println("Tuesday");    
                        break;         
                    case Wed:    
                        System.out.println("Wednesday");    
                        break;    
                    case Thu:    
                        System.out.println("Thursday");    
                        break;    
                    case Fri:    
                        System.out.println("Friday");    
                        break;    
                    case Sat:    
                        System.out.println("Saturday");    
                        break;    
                }    
            }    
        }    
}    

输出:

Sunday
Monday
Twesday
Wednesday
Thursday
Friday
Saturday

Switch 语句中的 Java 包装器

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

例子:

WrapperInSwitchCaseExample.java

//Java程序演示Wrapper类的使用 
//在switch语句中 
public class WrapperInSwitchCaseExample {       
       public static void main(String args[])  
       {         
            Integer age = 18;        
            switch (age)  
            {  
                case (16):            
                    System.out.println("你未满18岁。");  
                    break;  
                case (18):                
                    System.out.println("你有资格投票。");  
                    break;  
                case (65):                
                    System.out.println("你是老年人。");  
                    break;  
                default:  
                    System.out.println("请输入有效年龄。");  
                    break;  
            }             
        }  
} 

输出:

您有资格投票。

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想