如何切换大小写字符串(在java 1.7中)在内部工作?

如何切换大小写字符串(在java 1.7中)在内部工作?

问题描述:

我有一个与字符串切换案例相关的查询,如果jvm在字符串切换案例(功能在java 1.7中)如何内部工作?如何切换大小写字符串(在java 1.7中)在内部工作?

+0

https://docs.oracle.com/javase/specs/jls/se9/html/jls-14 .html#jls-14.11 – prsvr

+0

阅读此:https://*.com/questions/10836055/why-is-the-switch-statement-faster-than-if-else-for-string-in-java-7 – DoesData

switch语句将其表达式中的String对象与与每个case标签关联的表达式进行比较,就好像它使用String.equals方法一样;因此,switch语句中的String对象的比较区分大小写。

Java Switch案例使用String.equals()方法比较传递的值与大小写的值。

根据Switch的Strings中的Java 7文档,Java编译器通过使用String对象的switch语句比链式if-then-else语句生成通常更高效的字节码。

见下面的例子:

String fruit ="Mango";  

    switch (fruit) { 
    case "Apple": System.out.println("It's Apple : "+"Apple".hashCode());   
        break; 
    case "mango": System.out.println("It's mango : "+"mango".hashCode()); 
        break; 
    case "Mango": System.out.println("It's Mango : "+"Mango".hashCode()); 
        break; 
    } 

JVM转换此如下:

String fruit = "Mango"; 

    String str1; 
    switch ((str1 = fruit).hashCode()) { 
    case 63476538: 
     if (str1.equals("Apple")) { 
      System.out.println("It's Mango : " + "Mango".hashCode()); 
      } 
     break; 
    case 74109858: 
     if (str1.equals("Mango")) { 
      System.out.println("It's Mango : " + "Mango".hashCode()); 
     } 
     break; 
    case 103662530: 
     if (!str1.equals("mango")) { 
      System.out.println("It's mango : " + "mango".hashCode()); 
      return; 
     } 
     break; 
    } 
+0

我想知道,JVM使用了什么散列概念? –

+0

@TarunTyagi是的,它使用哈希。检查编辑的安装程序 –

+0

您也应该使用默认情况下显示一个示例。 –