源码:
package com.xiao.switchs; public class Demo { public static void main(String[] args) { String name="小小"; //JDK7的新特性,表达式结果可以是字符串 switch (name){ case "小夏": System.out.println("傻子"); case "小小": System.out.println("小小"); } } }
反编译.class文件的代码
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.xiao.switchs; public class Demo { public Demo() { } public static void main(String[] args) { String name = "小小"; byte var3 = -1; switch(name.hashCode()) { case 753376: if (name.equals("小夏")) { var3 = 0; } break; case 754144: if (name.equals("小小")) { var3 = 1; } } switch(var3) { case 0: System.out.println("傻子"); case 1: System.out.println("小小"); default: } } }
可以仔细看出即使JDK7的新特性支持字符串,但是从反编译的结果可以看出是通过hashCode()来处理成数字
反编译的教程
:
1.先找到.class文件所在的位置:在file->project structure中选择project看到project compiler output中有一个路径,这个路径就是编译生成.class文件存放的位置
2.再找到.java文件所在的位置:在包或者类中右键选择show in explorer可以打开其在文件夹中的位置
3.把.class文件拖到.java文件夹里面,这样在IDEA中就能出现.class文件了,就可以看了
微信扫码关注
更新实时通知