知识点解析
1.switch结构的核心概念
switch语句是一种多分支选择结构,它根据表达式的值来选择执行不同的代码块。与if-else结构相比,switch更适合处理离散的、有限个值的比较。
2.switch结构的基本语法
switch (表达式) {case 值1:// 代码块1[break;]case 值2:// 代码块2[break;]...[default:// 默认代码块]
}
3.switch结构的特点
- 表达式类型:可以是
byte
、short
、char
、int
、String
(Java 7+)、枚举类型。 - case值:必须是常量表达式,且不能重复。
- break语句:用于跳出switch结构,防止"程序穿透"。
- default语句:可选,用于处理所有未匹配的情况。
4. switch结构的执行流程
- 计算表达式的值
- 将表达式的值与每个case值进行比较
- 找到匹配的case后,执行对应的代码块
- 如果遇到break语句,则跳出整个switch结构
- 如果没有匹配的case,则执行default代码块(如果有)
5. switch结构的注意事项
- case值必须是常量表达式(final变量或字面量)
- case值不能重复
- break语句是可选的,但通常需要
- default语句是可选的,但建议保留
6.switch与if-else的区别
- switch:适用于离散的、有限个值的比较,代码更清晰。
- if-else:适用于范围判断或复杂条件判断。
案例解析
案例:基本switch结构
public class SwitchExample1 {public static void main(String[] args) {int day = 3;String dayName;switch (day) {case 1:dayName = "星期一";break;case 2:dayName = "星期二";break;case 3:dayName = "星期三";break;case 4:dayName = "星期四";break;case 5:dayName = "星期五";break;case 6:dayName = "星期六";break;case 7:dayName = "星期日";break;default:dayName = "无效的日期";}System.out.println("今天是:" + dayName);}
}
运行结果
今天是:星期三
代码解析:
- Java源文件保存为“SwitchExample1.java”。
- 定义变量
day
并赋值为3。 - 使用switch结构根据
day
的值输出对应的星期名称。 - 当
day
为3时,匹配case 3
,输出"星期三"。
案例:switch穿透
public class SwitchFallThrough {public static void main(String[] args) {int number = 2;String result;switch (number) {case 1:case 2:case 3:result = "小数字";break;case 4:case 5:case 6:result = "中数字";break;default:result = "大数字";}System.out.println("数字分类:" + result);}
}
运行结果
数字分类:小数字
代码解析:
- Java源文件保存为“SwitchFallThrough.java”。
- 定义变量
number
并赋值为2。 - 使用switch结构实现穿透(fall-through),多个case共享同一段代码。
- 当
number
为2时,匹配case 2
,由于没有break,继续执行case 3
的代码,最终输出"小数字"。
案例:String类型的switch
import java.util.Scanner;public class StringSwitchExample {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入颜色(red/green/blue):");String color = scanner.nextLine();switch (color) {case "red":System.out.println("红色代表热情");break;case "green":System.out.println("绿色代表生机");break;case "blue":System.out.println("蓝色代表宁静");break;default:System.out.println("未知颜色");}}
}
运行结果
请输入颜色(red/green/blue):red
红色代表热情
代码解析:
- Java源文件保存为“StringSwitchExample.java”。
- 使用Scanner获取用户输入的颜色字符串。
- 使用String类型的switch结构根据颜色输出对应的描述。
- 当输入"green"时,输出"红色代表热情"。
案例:枚举类型的switch
enum Season {SPRING, SUMMER, AUTUMN, WINTER
}public class EnumSwitchExample {public static void main(String[] args) {Season currentSeason = Season.SUMMER;String description;switch (currentSeason) {case SPRING:description = "万物复苏";break;case SUMMER:description = "烈日炎炎";break;case AUTUMN:description = "硕果累累";break;case WINTER:description = "白雪皑皑";break;default:description = "未知季节";}System.out.println(&#