一、switch语句基本用法
switch语句用于多分支选择结构,根据不同的情况执行不同的代码块。switch语句的基本语法如下:
switch(表达式) { case 常量1 : 语句1; break; case 常量2 : 语句2; break; case 常量3 : 语句3; break; default: 默认语句; }
其中,case后面跟的是常量或枚举值,表达式和常量值的数据类型必须一致。default为可选项,如果所有的case都不匹配,则执行default中的代码块。
以下是一个简单的例子,通过switch语句判断输入的数字是1、2、3三个数字中的哪一个:
import java.util.Scanner; public class SwitchDemo { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入数字(1-3):"); int num = input.nextInt(); switch(num) { case 1 : System.out.println("您输入的是1"); break; case 2 : System.out.println("您输入的是2"); break; case 3 : System.out.println("您输入的是3"); break; default: System.out.println("输入错误!"); } } }
二、switch语句的特性
switch语句与if语句不同的是,switch语句只能用于判断常量或枚举类型,而不能用于布尔类型或其他数据类型。此外,switch语句有以下特性:
- switch语句可通过break语句跳出多重嵌套的switch语句。
- case后面可以加多个常量值,以逗号隔开,表示多个条件执行相同的语句。
- case语句块中的声明语句必须用花括号包含起来。
三、switch语句的应用场景
switch语句适合于条件比较简单、分支路径比较少的情况,因为等价的if语句会显得冗长、可读性差。例如:对于枚举类型的判断,switch语句比if语句更加适合。
public enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public class SwitchEnumDemo { public static void main(String[] args) { Weekday day = Weekday.TUESDAY; 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; default: System.out.println("输入错误!"); } } }
四、switch语句的注意事项
在使用switch语句时需注意以下问题:
- case语句中的值不能重复。
- 如果case语句中没有break语句,则从匹配的语句开始依次执行所有的语句块,直到遇到break语句或switch语句结束。
- 如果default语句放在最后,则default语句可省略break语句。
- 如果表达式的值为null,则会抛出NullPointerException异常。