jdk7 switch 对 String 的支持


在jdk7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型,在jdk7后,支持String类型。

在switch语句中,表达式的值不能是null,否则会在运行时抛出NullPointerException。在case子句中也不能使用null,否则会出现编译错误。

同时,case字句的值是不能重复的。对于字符串类型的也一样,但是字符串中可以包含Unicode转义字符。重复值的检查是在Java编译器对Java源代码进行相关的词法转换之后才进行的。也就是说,有些case字句的值虽然在源代码中看起来是不同的,但是经词法转换之后是一样的,就会在成编译错误。比如:“男”和“\u7537”就是一个意思。

接下来我们就看一下,switch到底是如何实现的。

JDK | Switch对String的支持

java1.7版本之后,switch条件支持字符串

  1. publicclass switchDemoChar
  2. {
  3. public switchDemoChar()
  4. {
  5. }
  6. publicstaticvoid main(String args[])
  7. {
  8. char a ='b';
  9. switch(a)
  10. {
  11. case97:// 'a'
  12. System.out.println('a');
  13. break;
  14. case98:// 'b'
  15. System.out.println('b');
  16. break;
  17. }
  18. }
  19. }