Java Switch语句是流控制语句之一,它让程序有能力根据一个或多个选项执行不同的代码块。默认情况是在所有选项都无法匹配时所执行的代码块。Switch语句可以让程序执行多个路线中的一条,这些路线被称为case。Switch语句可以在多个case中使用默认情况。
一、Switch语句的基本用法
Switch语句是根据变量或表达式的值执行不同的代码块。Switch语句包含一个switch关键字,后跟括号()中的变量或表达式。跟在这个括号后面是一系列的case语句,每一个case后面是一个或多个语句需要执行。在所有的case语句都执行完成后,程序继续往下执行剩下的代码。
switch(expression) {
case value1:
// 在expression与value1匹配时执行的代码
break; // 可选的
case value2:
// 在expression与value2匹配时执行的代码
break; // 可选的
// 你可以在这里添加更多的case语句
default:
// 默认情况下要执行的代码
}
在上面的代码中,expression是需要检查的变量或表达式。如果expression的值与value1匹配,那么程序将跳转到value1的代码块中执行,以此类推。如果没有一个匹配的值,程序将执行默认情况下的代码块。
二、Switch语句的逻辑行为
在上面的代码示例中,每个case语句后面跟着一个break语句。这个break语句可以让程序跳出整个switch语句块,如果没有break语句,程序将继续执行下一组case语句的代码,这种情况被称为fall-through。下面的例子展示了fall-through:
int day = 4;
switch (day) {
case 1:
System.out.println("星期一");
case 2:
System.out.println("星期二");
case 3:
System.out.println("星期三");
case 4:
System.out.println("星期四");
case 5:
System.out.println("星期五");
case 6:
System.out.println("星期六");
case 7:
System.out.println("星期日");
}
当上面的代码运行时,输出是:
星期四
星期五
星期六
星期日
这是因为程序匹配了case 4,它跳过了break语句,然后运行了所有case之后的语句,这就是fall-through。
三、默认情况
当switch语句中所有的case语句都不能与expression匹配时,程序将代码块跳转到default语句。default语句是可选的,但是通常用于处理不是很常见的情况,或者作为错误处理的最后一个手段。
int day = 10;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("未知的天数");
}
在上面的代码示例中,当day的值为10时,程序输出“未知的天数”。
四、Switch语句的使用技巧
Switch语句可以用于很多不同的任务。下面是一些技巧,可以用于更加高效地使用Switch语句。
1. 字符串
在Java 7中,Switch语句通过字符串进行匹配。下面是一个简单的例子:
String s = "red";
switch (s) {
case "red":
System.out.println("红色");
break;
case "green":
System.out.println("绿色");
break;
case "blue":
System.out.println("蓝色");
break;
}
上面的代码中,Switch语句使用字符串进行匹配,输出结果为“红色”。
2. 枚举
Switch语句可以用于枚举类型变量的匹配。下面是一个例子:
enum Day {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
Day day = Day.Monday;
switch (day) {
case Monday:
System.out.println("星期一");
break;
case Tuesday:
System.out.println("星期二");
break;
case Wednesday:
System.out.println("星期三");
break;
case Thursday:
System.out.println("星期四");
break;
case Friday:
System.out.println("星期五");
break;
case Saturday:
System.out.println("星期六");
break;
case Sunday:
System.out.println("星期日");
break;
}
上面的代码中,Switch语句用来匹配枚举类型变量Day。
3. 范围匹配
Java 7中,Switch语句支持范围匹配。下面是一个例子:
int score = 60;
switch (score) {
case 90-100:
System.out.println("A");
break;
case 80-89:
System.out.println("B");
break;
case 70-79:
System.out.println("C");
break;
case 60-69:
System.out.println("D");
break;
default:
System.out.println("E");
}
在上面的范围匹配示例中,当score的值为60时,程序输出“D”。
五、总结
Switch语句是使用多种类型匹配多个情况的一种流控制语句。通常,Switch语句可以使代码更清晰,易于维护,并减少代码量。在使用Switch语句时,需要记住一些技巧,例如为每个case添加break,避免fall-through,还可以通过使用字符串、枚举类型、范围匹配提高程序的效率。