目录
首先编写一个java类StringDemo1.java
经过编译后,生成StringDemo1.class文件
使用jclasslib反编译工具
JDK版本映射

首先编写一个java类 StringDemo1.java
public class StringDemo1 { public static void main(String[] args) { String str1 = "aaa" + "bbb"; System.out.println(str1); String str2 = "ccc"; str2 += "ddd"; System.out.println(str2); }}
经过编译后,生成 StringDemo1.class文件
使用IDEA查看编译之后的文件内容:
//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package jdk.java.lang.string;public class StringDemo1 { public StringDemo1() { } public static void main(String[] args) { String str1 = "aaabbb"; System.out.println(str1); String str2 = "ccc"; str2 = str2 + "ddd"; System.out.println(str2); }}
可以看出内容已经是经过IDEA反编译之后的了,并不能看到字节码内容。

使用jclasslib反编译工具
在IDEA中搜索插件jclasslib bytecode viewer,然后进行安装,重启IDEA。
再次打开StringDemo1.java文件,在IDEA菜单栏上打开View -> Show Bytecode,即可以看到字节码文件内容:
// class version 52.0 (52)// access flags 0x21public class jdk/java/lang/string/StringDemo1 { // compiled from: StringDemo1.java // access flags 0x1 public <init>()V L0 LINENUMBER 8 L0 ALOAD 0 INVOKESPECIAL java/lang/Object.<init> ()V RETURN L1 LOCALVARIABLE this Ljdk/java/lang/string/StringDemo1; L0 L1 0 MAXSTACK = 1 MAXLOCALS = 1 // access flags 0x9 public static main([Ljava/lang/String;)V L0 LINENUMBER 11 L0 LDC "aaabbb" ASTORE 1 L1 LINENUMBER 12 L1 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ALOAD 1 INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V L2 LINENUMBER 15 L2 LDC "ccc" ASTORE 2 L3 LINENUMBER 16 L3 NEW java/lang/StringBuilder DUP INVOKESPECIAL java/lang/StringBuilder.<init> ()V ALOAD 2 INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; LDC "ddd" INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String; ASTORE 2 L4 LINENUMBER 17 L4 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ALOAD 2 INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V L5 LINENUMBER 18 L5 RETURN L6 LOCALVARIABLE args [Ljava/lang/String; L0 L6 0 LOCALVARIABLE str1 Ljava/lang/String; L1 L6 1 LOCALVARIABLE str2 Ljava/lang/String; L3 L6 2 MAXSTACK = 2 MAXLOCALS = 3}

更多相关文章

  1. Android之多线程断点下载
  2. Android(安卓)内核编绎错误解决方案
  3. android 自动打包
  4. Android帮助文档(第二部分)开发工具
  5. android 扫描SD卡与系统文件
  6. Android之Adapter用法总结
  7. [Android] 无法创建项目问题解决
  8. WebView显示网页
  9. Android(安卓)系统搜索框(有浏览记录)

随机推荐

  1. android:repeatCount="infinite"在set中
  2. Android(安卓)Display架构分析--侧重高通
  3. Android--Activity篇之启动模式
  4. android断点下载器案例
  5. [转]Android(安卓)Music和第三方应用
  6. Android之如何解决Android studio运行出
  7. 安卓开发之实现下角圆形按钮
  8. 编程回忆之Android回忆(Android 调用短信
  9. Android(安卓)Studio 多渠道打包及 gradl
  10. Android(安卓)判断 网络连接 Internet访