Java中的Switch语句

原创 朱雀 2021-08-14 08:51 13724阅读 0赞

switch 语句是一个多路分支语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。基本上,表达式可以是 byte、short、char 和 int 原始数据类型。从 JDK7 开始,它还适用于枚举类型(Java 中的Enums)、String类和Wrapper类。
Switch-case 的语法:

  1. // switch statement
  2. switch(expression)
  3. {
  4. // case statements
  5. // values must be of same type of expression
  6. case value1 :
  7. // Statements
  8. break; // break is optional
  9. case value2 :
  10. // Statements
  11. break; // break is optional
  12. // We can have any number of case statements
  13. // below is default statement, used when none of the cases is true.
  14. // No break is needed in the default case.
  15. default :
  16. // Statements
  17. }

Switch-case流程图:

Switch-Case 语句的流程图

switch 语句的一些重要规则:

  • 不允许出现重复的大小写值。
  • case 的值必须与 switch 中的变量具有相同的数据类型。
  • case 的值必须是常量或文字。不允许使用变量。
  • break 语句在 switch 中用于终止语句序列。
  • break 语句是可选的。如果省略,执行将继续到下一个案例。
  • default 语句是可选的,可以出现在 switch 块内的任何位置。如果不在最后,则必须在 default 语句之后保留一个 break 语句,以省略下一个 case 语句的执行。

示例:
考虑以下 java 程序,它声明了一个名为 day 的 int,其值表示 day(1-7)。该代码使用 switch 语句根据一天的值显示一天的名称。

  1. // Java program to demonstrate switch case
  2. // with primitive(int) data type
  3. public class Test {
  4. public static void main(String[] args)
  5. {
  6. int day = 5;
  7. String dayString;
  8. // switch statement with int data type
  9. switch (day) {
  10. case 1:
  11. dayString = "Monday";
  12. break;
  13. case 2:
  14. dayString = "Tuesday";
  15. break;
  16. case 3:
  17. dayString = "Wednesday";
  18. break;
  19. case 4:
  20. dayString = "Thursday";
  21. break;
  22. case 5:
  23. dayString = "Friday";
  24. break;
  25. case 6:
  26. dayString = "Saturday";
  27. break;
  28. case 7:
  29. dayString = "Sunday";
  30. break;
  31. default:
  32. dayString = "Invalid day";
  33. }
  34. System.out.println(dayString);
  35. }
  36. }

输出:

  1. Friday

省略break语句

因为 break 语句是可选的。如果我们省略中断,执行将继续到下一个案例。有时需要在多个 case 之间没有 break 语句。例如,考虑上述程序的更新版本,它还显示一天是工作日还是周末。

  1. // Java program to demonstrate switch case
  2. // with multiple cases without break statements
  3. public class Test {
  4. public static void main(String[] args)
  5. {
  6. int day = 2;
  7. String dayType;
  8. String dayString;
  9. switch (day) {
  10. case 1:
  11. dayString = "Monday";
  12. break;
  13. case 2:
  14. dayString = "Tuesday";
  15. break;
  16. case 3:
  17. dayString = "Wednesday";
  18. break;
  19. case 4:
  20. dayString = "Thursday";
  21. break;
  22. case 5:
  23. dayString = "Friday";
  24. break;
  25. case 6:
  26. dayString = "Saturday";
  27. break;
  28. case 7:
  29. dayString = "Sunday";
  30. break;
  31. default:
  32. dayString = "Invalid day";
  33. }
  34. switch (day) {
  35. // multiple cases without break statements
  36. case 1:
  37. case 2:
  38. case 3:
  39. case 4:
  40. case 5:
  41. dayType = "Weekday";
  42. break;
  43. case 6:
  44. case 7:
  45. dayType = "Weekend";
  46. break;
  47. default:
  48. dayType = "Invalid daytype";
  49. }
  50. System.out.println(dayString + " is a " + dayType);
  51. }
  52. }

输出:

  1. Tuesday is a Weekday

嵌套的 Switch Case 语句

我们可以使用 switch 作为外部 switch 语句序列的一部分。这称为嵌套开关。由于 switch 语句定义了自己的块,因此内部 switch 中的 case 常量和外部 switch 中的 case 常量之间不会发生冲突。例如:

  1. // Java program to demonstrate
  2. // nested switch case statement
  3. public class Test {
  4. public static void main(String[] args)
  5. {
  6. String Branch = "CSE";
  7. int year = 2;
  8. switch (year) {
  9. case 1:
  10. System.out.println("elective courses : Advance english, Algebra");
  11. break;
  12. case 2:
  13. switch (Branch) // nested switch
  14. {
  15. case "CSE":
  16. case "CCE":
  17. System.out.println("elective courses : Machine Learning, Big Data");
  18. break;
  19. case "ECE":
  20. System.out.println("elective courses : Antenna Engineering");
  21. break;
  22. default:
  23. System.out.println("Elective courses : Optimization");
  24. }
  25. }
  26. }
  27. }

输出:

  1. elective courses : Machine Learning, Big Data
文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,13724人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaSwitch语句

    switch 语句是一个多路分支语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。基本上,表达式可以是 byte、short、char 和 in...