这个问题主要用来检查你对当前 Java 开发的了解。 Java 7扩展了 switch case 使用字符串的能力,早期的 Java 版本不支持这一点。如果您正在实现字符串的条件链,您可以使用 if-else 条件,如果您使用 Java 7或更高版本,则可以使用 switch case。
在 Java 7之前,实现基于字符串的条件流的唯一方法是使用 if-else 条件。 但是 Java 7也改进了 switch case 来支持 String。
下面是在Switch中使用String例子:
package com.yveshe;
public class SwitchStringExample {
public static void main(String[] args) {
printColorUsingSwitch("red");
printColorUsingIf("red");
// switch case string is case sensitive
printColorUsingSwitch("RED");
printColorUsingSwitch(null);
}
private static void printColorUsingIf(String color) {
if (color.equals("blue")) {
System.out.println("BLUE");
} else if (color.equals("red")) {
System.out.println("RED");
} else {
System.out.println("INVALID COLOR CODE");
}
}
private static void printColorUsingSwitch(String color) {
switch (color) {
case "blue":
System.out.println("BLUE");
break;
case "red":
System.out.println("RED");
break;
default:
System.out.println("INVALID COLOR CODE");
}
}
}
输出结果如下:
RED
RED
INVALID COLOR CODE
Exception in thread "main" java.lang.NullPointerException
at com.yveshe.SwitchStringExample.printColorUsingSwitch(SwitchStringExample.java:34)
at com.yveshe.SwitchStringExample.main(SwitchStringExample.java:20)
Switch中使用String需要注意一下几点:
- 1.switch能够取代 if-else-if条件链使得代码更加简洁易读
- 2.switch比较的时候区分大小写,输出的例子也说明了这一点
- 3.Java中switch是通过String.equals 方法来比较传递值和case值,所以请确保添加 NULL 检查以避免 NullPointerException
- 4.java 编译器为 Switch 语句中的字符串生成比链式 if-else-if 条件语句更有效的字节码
- 5.Java switch case String只能在Java7或更高的版本中使用,否则它会抛出异常
参考:
https://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html