switch语句基本语法
switch(整数|枚举|字符|字符串){
case 内容1 :
内容满足时执行语句;
[break;]
case 内容2 :
内容满足时执行语句;
[break;]
...
default:
内容都不满足时执行语句;
[break;]
}
代码示例:按照day的值输出星期
public class Week{
public static void main(String[] args){
int day = 8;
switch(day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("数值错误,请重新输入");
break;
}
}
输入1和7时


当输入错误值-1和8时

执行流程:
- 先计算出表达式的值
- 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项:
1.多个case后面的数值不能一样。
case 1:
System.out.println("星期一");
break;
case 1:
System.out.println("星期二");
break;
这种情况就会发生编译错误

2.switch后面括号中只能跟下列数据类型
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
比如long虽然是整数,但是因为switch的编译会用到两个指令,tablesswitch和lookupswitch。而这2个指令指令只会运行在int指令下,低于int的正数类型会被转为int类型,而这一点和short、byte等类型在计算时会被转为int来处理的表现是一致的。long类型超过了int的范围,所以会编译报错。
long day = 8;
switch(day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
...

3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句也可以省略。但是一般不建议省略break。因为switch的执行规则是“匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”
public class DemoSwitch{
public static void main(String[] args){
int num = 2;
switch(num) {
case 1:
System.out.println("你好");
break;
case 2:
System.out.println("hi");
//break; 这里break省略掉
case 3:
System.out.println("hello");
break;
default:
System.out.println("haha");
break;
}
}
}

这里编译可以通过,但是运行时,匹配到case 2后,由于没有break语句,程序就会穿透case 3,继续执行里面的语句,直到遇见break才会停止。所以建议不要省略break语句。
本文详细介绍了Java中的switch语句基本语法,包括其执行流程、注意事项和代码示例。强调了case值的唯一性、switch适用的数据类型限制,以及break语句的重要性。通过实例展示了当输入不同值时,程序如何根据switch结构执行。同时提醒开发者在编写switch语句时避免省略break以防止穿透执行。
1411

被折叠的 条评论
为什么被折叠?



