switch-case语句的格式:
switch ( 表达式 ) {
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
default: 语句;break;
}
Tips:
1) switch后面的表达式只能是整型或字符型变量;包括基本类型的byte,short,int,char,以及byte,short,int,char的封装类Byte,Short,Integer,Character,还有枚举类型(Enum)。
2) 如果case语句后面没有break,执行完此case语句后,会继续执行后面的case语句和default语句,直到遇到break或switch语句全部执行结束。
switch(10){
case 10: System.out.println("10");
case 20: System.out.println("20");break;
case 30: System.out.println("30");break;
default: System.out.println("0");break;
}
执行结果:
10
20
3) 可以存在多个case语句,下面的例子就是case 10和case 20执行的内容是一样的;
switch(10){
case 10:
case 20: System.out.println("20");break;
case 30: System.out.println("30");break;
default: System.out.println("0");break;
}
运行结果:
20
4) switch后面的表达式是枚举类型(Enum)时,case后面可直接跟枚举项;
/**
* 商品的排序用枚举实现
*/
public enum ProductOrderBy {
SORTFIELD_DESC {
...
},
CREATED_ASC {
...
},
CREATED_DESC {
...
}
...
}
/**
* switch使用时,case后面直接跟SORTFIELD_DESC,而不是ProductOrderBy.SORTFIELD_DESC
* 其他地方则必须用ProductOrderBy.SORTFIELD_DESC
*/
switch(ProductOrderBy.CREATED_ASC){
case SORTFIELD_DESC: System.out.println("排序倒序");break;
case CREATED_ASC: System.out.println("时间正序");break;
case CREATED_DESC: System.out.println("时间倒序");break;
default: System.out.println("默认排序");break;
}