乐趣区

关于java:Java-中-switch-详解

最近面试了不少 Java 开发工程师发现对 switch 比拟生疏,我尝试论述一下我对它的了解和用法。

swich 是什么

switch 源于 C 语言用在编程中,是一个判断抉择代码(有时也被划归为一种抉择语句)。其性能就是管制流程流转的。switch 语句能够从一系列代码中选出一段去执行。它的格局如下:

switch(integral-selector) {
    case integral-value1 : statement; break;
    case integral-value2 : statement;    break;
    case integral-value3 : statement;    break;
    case integral-value4 : statement;    break;
    case integral-value5 : statement;    break;
    // ...
    default: statement;
}

其中,integral-selector(整数抉择因子)是一个可能产生整数值的表达式,switch 可能将这个表达式的后果与每个 integral-value(整数值)相比拟。若发现相符的,就执行对应的语句(简略或复合语句,其中并不需要括号)。若没有发现相符的,就执行 default 语句。

在下面的定义中,大家会留神到每个 case 均以一个 break 结尾。这样可使执行流程跳转至 switch 主体的开端。这是构建 switch 语句的一种传统形式,但 break 是可选的。若省略 break,会继续执行前面的 case 语句的代码,直到遇到一个 break 为止。通常咱们不想呈现这种状况,但对有教训的程序员来说,兴许可能善加利用。留神最初的 default 语句没有 break,因为执行流程已到了 break 的跳转目的地。当然,如果思考到编程格调方面的起因,齐全能够在 default 语句的开端搁置一个 break,只管它并没有任何理论的作用。

恪守 switch 语句规定

  • switch 语句十分有用,但在应用时必须审慎。所写的任何 switch 语句都必须遵循以下规定:
  • 只能针对根本数据类型中的整型类型应用 switch,这些类型包含 int、char 等。对于其余类型,则必须应用 if 语句。
  • switch() 的参数类型不能为实型。
  • case 标签必须为字符串常量或字面量。
  • case 标签必须是惟一性的表达式;也就是说,不容许两个 case 具备雷同的值。

switch 字符串

Java 7 减少了在字符串上 switch 的用法。下例展现了从一组 String 中抉择可能值的传统办法,以及旧式办法:

public class StringSwitch {public static void main(String[] args) {
    String color = "red";
    // 老的形式: 应用 if-then 判断
    if("red".equals(color)) {System.out.println("RED");
    } else if("yellow".equals(color)) {System.out.println("YELLOW");
    } else if("blue".equals(color)) {System.out.println("BLUE");
    } else {System.out.println("Unknown");
    }
    // 新的办法: 字符串搭配 switch
    switch(color) {
      case "red":
        System.out.println("RED");
        break;
      case "yellow":
        System.out.println("YELLOW");
        break;
      case "blue":
        System.out.println("BLUE");
        break;
      default:
        System.out.println("Unknown");
        break;
    }
  }
}

输入后果:

RED
RED

一旦了解了 switch,你会明确这其实就是一个逻辑扩大的语法糖。新的编码方式能使得后果更清晰,更易于了解和保护。下篇文章聊一聊 switch 字符串背地的原理。


感觉这篇内容帮到了您,请您帮忙点赞评论和转发。

关注公众号『码农洞见』,有你才狂热。

退出移动版