答:因为 switch 底层依赖的字节码指令不支持 long 类型,且 long 的范围太大,不适合通过查表或跳转来实现匹配。2. String 类型的 switch 比 if-else 性能更高吗?答:通常情况下,switch 会更高效一些,因为它利用了 hashCode 和跳转表。但在 case 比较特别多时,性能差距可能不明显。3. 如何避免 null 引发...
不处理的话会抛 NullPointerException ,这个是由 switch-on-String 的实现决定的。进入switch 语句时,...
如果一定要用 long,可以用 if-else 替代 switch,或者将 long 转为 int(但需注意可能的溢出问题)。 switch 能否作用在 String 上? 答案是:可以(JDK 1.7 及之后版本)! 在JDK 1.7 中,switch 增加了对 String 类型的支持。这是通过将 String 的值转化为其对应的hashCode来实现的,但在底层会有额外的字符串比较...
这是因为在switch语句内部会自动调用表达式的hashCode()方法来进行比较,而null值是没有hashCode的。 为了解决这个问题,我们可以使用if-else语句来代替switch语句,如下所示: Stringvalue=null;if(value==null){System.out.println("值为空");}else{switch(value){case"A":System.out.println("值为A");break;case...
switch支持String只是一个语法糖,由javac来负责生成相应的代码。底层的JVM在switch上并没有进行修改。 参考 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html 如果switch传入的null,那么在运行时对一个null对象调用hashCode方法会出现NullPointerException。
public class SwitchDemo{ public static void main( String[] args) { string value = null;if (value == null) { //值为空的情况下的处理代码system.out.println("值为空");}else { switch (value) { case "A"://值为”A”的情况下的处理代码 break;case "B"://值为"B"的情况下的处理代码 ...
switch (string) { case "hello": System.out.println(string); break; default: throw new IllegalArgumentException("非法參数"); } } 语法糖的背后,其有用的对待string 类型时候,用的是hashCode() 方法转换的. 所以string 类型不能为 NULL. 比如: ...
String fruit ="apple";switch(fruit) {case"apple": System.out.println("This is an apple.");break;case"orange": System.out.println("This is an orange.");break;default: System.out.println("Unknown fruit."); } 在上述代码中,我们使用了一个字符串变量fruit作为switch语句的表达式。然后,我们使用...
曾几何时去面试的时候,一些面试官老是问 switch 支持 String 麽之类的问题。 如今指北君想拍案而起,不要在问了,Java 中的 switch 都快支持到银河系了。什么null,Object... ...等等, 已经全部支持! 下面指北君带大家看看万箭齐发的switch到底有多强。