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。
我们必须处理对传递的字符串的空值检查。