原语法

  1. switch(variable){
  2. case 1:
  3. do something;
  4. break;
  5. case 2:
  6. do something;
  7. break;
  8. default:
  9. do something;
  10. }

switch 接受 intshortbytechar这四个基本类型的值,当值匹配分支会执行分支代码。default是在不匹配任何所给条件时执行的代码。break用于当前分支结束时跳出分支,否则会继续执行后续其他分支代码。

语法糖

Java5——枚举

Java5中,为switch语句添加枚举变量的支持。传入的必须是对应枚举类型的变量。

  1. enum Signal{
  2. RED,
  3. YELLOW,
  4. GREEN
  5. }
  6. Signal color = Signal.RED;
  7. switch(color) {
  8. case RED:
  9. color = Signal.GREEN;
  10. break;
  11. case YELLOW:
  12. color = Signal.RED;
  13. break;
  14. case GREEN:
  15. color = Signal.YELLOW;
  16. break;
  17. }

Java7——String

Java7中,为switch语句添加String类型的支持。
底层实现上,第一步通过hashcode进行分支选择,内层再嵌套if判断字符串相同。

  1. switch(str){
  2. case "str1":
  3. do something;
  4. break;
  5. case "str2":
  6. do something;
  7. break;
  8. default:
  9. do something;
  10. }

Java12——->写法

Java12中新增->语法糖,在这种情况下不需要带break语句以跳出代码块。

  1. switch(variable){
  2. case 1 -> do_something;
  3. case 2 -> {
  4. do_something;
  5. }
  6. default -> do_something;
  7. }