Java 7的特点:switch case下的字符串使用教程与实例

237 阅读3分钟

switch case下的字符串教程

Java 7语言 已经引入了在switch case中使用字符串。在Java 7版本之前,switch case只允许Integer、byte、short、char等变量和枚举值。对字符串的支持不是一个伟大的语言

但对于开发者来说,在switch case中直接使用字符串是非常方便的,可以简化开发者的可读性。

这篇文章是我关于Java 7特性的第一篇文章,我将在未来几周内发表更多关于Java 7特性的文章。

让我们看看下面的代码

public class SwitchWithStringsDemo {  
    public static void main(String[] args) {  
        int days = 1;  
        String s="one";  
        String numberValue;  
        switch (s) {  
            case 1:  numberValue = "ONE";  
                     break;  
            case 2:  numberValue = "TWO";  
                     break;  
            case 3:  numberValue = "THREE";  
                     break;  
            default: numberValue = "Invalid number";  
                     break;  
        }  
         
    }  
}  

如果我们在eclipse/net beans中使用Java 1.7版本编写上述程序会发生什么,所以我们也来看看上述程序在命令行中的输出吧

在JDK 1.7版本以下的switch情况下使用String的Eclipse错误

如果我们在switch情况下直接使用String,eclipse /net beans代码编辑器会抛出以下错误。
对于1.7以下的源代码级别,不能对字符串类型的值进行切换。只允许可转换的int值或枚举常量。

当在开关中使用字符串的java程序被编译为低于java7的版本时,在命令行中会出现以下错误。

线程 "main "中出现异常 java.lang.RuntimeException。无法编译的源代码 - 开关中的字符串在-source 1.6
中不被支持(使用-source 7或更高版本来启用开关中的字符串)。

在Java 7中使用Switch案例中的字符串功能的优势。

替代Switch case的方法是if else语句,但它的可读性不高,而且会使开发人员感到困惑,因为它的代码行数更多,循环复杂性也会增加。循环复杂度是一种识别代码复杂度的方法
我们有不同的替代方法来在switch case中使用字符串。

在Switch情况下,使用Java 1.7下面的if else来替代字符串。

这不是在Switch情况下String使用的确切替代方法,而是切换情况的替代方法。

public class IfElseDemo {  
 public static void main(String[] args) {  
  String value = "ONE";  
  if ("ONE".equals(value)) {  
   System.out.println("Message One");  
  }  
  if ("TWO".equals(value)) {  
   System.out.println("Message One");  
  }  
  if ("THREE".equals(value)) {  
   System.out.println("Message One");  
  }  
 }  
}

JDK 1.7以下使用枚举替代Switch情况下的String的例子

在Java 7之前,枚举可以被映射到switch case中,下面的代码说明了枚举的用法。

public class AlternativeToStringSwitch {  
  
 public enum Daily {  
  ONE, TWO, THREE;  
 }  
  
 public static void main(String args[]) {  
  
  String str = "ONE";  
  
  switch (Daily.valueOf(str)) {  
  case ONE:  
   System.out.println("one");  
   break;  
  
  case TWO:  
   System.out.println("two");  
   break;  
  
  case THREE:  
   System.out.println("three");  
   break;  
  
  }  
 }  
}

JDK 1.7中字符串在switch case中的例子及教程

public class SwitchStringDemoDemo {  
    public static void main(String[] args) {  
        int days = 1;  
        String string="one";  
        String numberValue;  
        switch (string) {  
            case "one":  numberValue = "ONE";  
                     break;  
            case "two":  numberValue = "TWO";  
                     break;  
            case "three":  numberValue = "THREE";  
                     break;  
            default: numberValue = "Invalid number";  
                     break;  
        }  
         
    }  
}  

在Java 7中,字符串的变量被分配并可以在switch case中被引用。在jdk6版本中,情况下字符串的值是常数。

Java 7中Switch案例中的字符串的空值检查

和其他java代码一样,如果在Switch情况下,字符串被传递为空,就会抛出NullPointerException。
我们必须处理对传递的字符串的空值检查。