You are on page 1of 5

Java switch case 语句整理总结

前言:学会以下的几种用法,java 笔试有关 switch 就都没问题了


switch(表达式) {
case 常量表达式 1: //如果常量表达式是 1 ,可看做 if(某变量==1)
语句 1;
break; //跳出 switch 需要认真理解
....
case 常量表达式 2: //看做 else if
语句 2;
break;
default:语句; //看做 else ,即都没符合
}
1、switch-case 语句完全可以与 if-else 语句互转,但通常来说,switch-case 语句执行效率要
高。 下面会举例解释。
2、default 就是如果没有符合的 case 就执行它,default 并不是必须的.
3、case 后的语句可以不用大括号.
4、switch 语句的判断条件可以接受 byte、short、int 、char、String、枚举,不能接受其他类型. 或
者是 final 型的变量。
但是 final 型的变量也是有要求的,也即是它必须是编译时的常量,怎么讲呢,看下面的程
序段:
final int a = 0;
final int b;
第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化,当然,这条语句
也是错误的。
所以总结 case 后的值可以是常数值或 final 型的值。

5、一旦 case 匹配,就会顺序执行后面的程序代码 ,而不管后面的 case 是否匹配,直到遇见


break,利用这一特性可以让好几个 case 执行统一语句.
原理归原理,下面是几个容易混淆的例子.
1. 标准型(case 后面都有 break 语句)
int i=3;
switch(i) {
case 1: //相当于 if(i==1)
System.out.println(1);
break; //跳出 switch
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println("default");
break;
}
输出结果: 3
2.特殊型 1(不是完全有 break 语句,可以完成一些特殊应用)
例子:求 2013 某月的天数 month 为月份
int year=2013;
int month=3;
int day;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 2:
day=28;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
}
这里 day=31;
3.特殊型 2(default 的位置)
3.1(default 中间)
int i=1;
switch(i) {
case 1: //符合 i=1 所以进入 输出 1
System.out.println(1);
default: //没有 break 所以执行 default 继续输出 default
System.out.println("default");
case 2: //没有 break 继续执行 case 输出 2
System.out.println(2);
break; // 有 break 结束
case 3:
System.out.println(3);
break;
}
输出结果:
1
default
2

3.2 (先遇到 default,case 有符合的值)


int i=1;
switch(i){
default: //case 有符合的值(i=1)所以不执行
System.out.println("default");
case 1: //符合i=1 所以进入 输出1
System.out.println(1);
case 2: //没有break 继续执行case 输出2
System.out.println(2);
break; // 有break 结束
case 3:
System.out.println(3);
break;
}
输出结果:
1
2

3.3 (先遇到 default,case 没有符合的值)


int i=4;
switch(i) {
default: //case 没有符合的值(i=4)所以执行
System.out.println("default");
case 1: //没有break 所以执行case 输出1
System.out.println(1);
case 2: //没有break 继续执行case 输出2
System.out.println(2);
break; // 有break 结束
case 3:
System.out.println(3);
break;
}
输出结果:
default
1
2

3.3 (最后遇到 default,)


int i=4;
switch(i) {
case 1: //不符合所以不执行
System.out.println(1);
case 2: //不符合所以不执行
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default: //case 没有符合的值(i=4)所以执行
System.out.println("default");
}
输出结果:
default

------------------------------------------------------------------------------------------------- 实例介绍:
1)
public class Switch {
public static void main(String[] args){
int x=0;
switch(x){
default:
System.out.println("default");
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
}
}
}
输出结果如下:
default
1
public class Test {

public static void main(String[] args) {


int x=0;
switch(x){
default:
System.out.println("default");
case 0:
System.out.println(0);
case 1:
System.out.println(1);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
break;
case 4:
System.out.println(4);
}
}
}
输出结果如下:
0
1
2
3
总结:
switch 表达式的值决定选择哪个 case 分支,如果找不到相应的分支,就直接从"default" 开
始输出。
当程序执行一条 case 语句后,因为例子中的 case 分支中没有 break 和 return ,无论再遇到
什么 case(不符合也执行),default 都执行。直到遇到 break;

You might also like