Java教程- 详解 Java switch 语句

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语句流程图
例子:
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;
}
}
}
输出:
您有资格投票。