这篇文章主要介绍“怎么使用IDEA查看java文件编译后的字节码内容”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用IDEA查看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);
}
}
使用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反编译之后的了,并不能看到字节码内容。
在IDEA中搜索插件jclasslib bytecode viewer,然后进行安装,重启IDEA。
再次打开StringDemo1.java文件,在IDEA菜单栏上打开View -> Show Bytecode,即可以看到字节码文件内容:
// class version 52.0 (52)
// access flags 0x21
public 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
}
JDK版本 | class版本 |
---|---|
J2SE 8 | 52 |
J2SE 7 | 51 |
J2SE 6.0 | 50 |
J2SE 5.0 | 49 |
JDK 1.4 | 48 |
JDK 1.3 | 47 |
JDK 1.2 | 46 |
JDK 1.1 | 45 |
关于“怎么使用IDEA查看java文件编译后的字节码内容”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。