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; }