switch

switch关键字的中文意思是开关、转换的意思，switch语句在条件语句中特别适合做一组变量相等的判断，在结构上比if语句要清晰很多。

switch语句的语法格式为：

switch(表达式){

case 值1:

功能代码1;

[break; ]

case 值2:

功能代码2;

[break; ]

……

default:

功能代码1;

[break; ]

}

语法说明：

1、 表达式的类型只能为byte、short、char和int这4种之一。

2、 值1、值2…值n只能为常数或常量，不能为变量。

3、 功能代码部分可以写任意多句。

4、 break关键字的意思是中断，指结束switch语句，break语句为可选。

5、 case语句可以有任意多句，是标号语句。

6、 default语句可以写在switch语句中的任意位置，功能类似于if语句中的else。

执行流程：当表达式的值和对应case语句后的值相同时，既从该位置开始向下执行，一直执行到switch语句的结束，在执行中，如果遇到break语句，则结束switch语句的执行。

则在if-else if-else语句中，根据月份获得每个月的天数，不考虑闰年，的示例代码如下：

1. int month = 10;

2. int days = 0;

3. switch(month){

4. case 1:

5. days = 31;

6. break;

7. case 2:

8. days = 28;

9. break;

10. case 3:

11. days = 31;

12. break;

13. case 4:

14. days = 30;

15. break;

16. case 5:

17. days = 31;

18. break;

19. case 6:

20. days = 30;

21. break;

22. case 7:

23. days = 31;

24. break;

25. case 8:

26. days = 31;

27. break;

28. case 9:

29. days = 30;

30. break;

31. case 10:

32. days = 31;

33. break;

34. case 11:

35. days = 30;

36. break;

37. case 12:

38. days = 31;

39. break;

40. }

41. System.out.println(days);

根据switch语句的语法，该代码也可以简化为如下格式：

1. int month = 10;

2. int days = 0;

3. switch(month){

4. case 2:

5. days = 28;

6. break;

7. case 4:

8. case 6:

9. case 9:

10. case 11:

11. days = 30;

12. break;

13. default:

14. days = 31;

15. }

16. System.out.println(days);

代码说明：因为switch语句每次比较的是相等关系，所以可以把功能相同的case语句合并起来，而且可以把其他的条件合并到default语句中，这样可以简化case语句的书写。该代码的结构比最初的代码简洁很多了。

虽 然在语法上switch只能比较相等的结构，其实某些区间的判别也可以通过一定的变换使用switch语句进行实现。例如if-else if-else语句示例中的分数转换的示例，则分数的区间位于0-100之间，如果一个一个的去比较，case语句的数量会比较多，所以可以做一个简单的 数字变换，只比较分数的十位及以上数字，这样数字的区间就缩小到了0-10，则实现的代码如下：

1. int score = 87;

2. switch(score / 10){

3. case 10:

4. case 9:

5. System.out.println(‘A’);

6. break;

7. case 8:

8. System.out.println(‘B’);

9. break;

10. case 7:

11. System.out.println(‘C’);

12. break;

13. case 6:

14. System.out.println(‘D’);

15. break;

16. default:

17. System.out.println(‘E’);

18. }

当然，switch语句不是很适合进行区间的判别，更多的区间判别一般还是使用if-else if-else语句进行实现。