首页 > 作文

如何使用IDEA查看java文件编译后的字节码内容

更新时间:2023-04-06 03:23:00 阅读: 评论:0

首先编写一个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// (powere吃什么对伤口愈合好d 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 0x1public <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 0x9public 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.pr毕业旅游intln (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.app汽车保险公司end (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 in单身潜逃vokevirtual 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}

以上编译内容是我在jdk1.8u202环境下进行编译的,所以开头才会有class version 52.0 (52)的标识。

至于字节码怎么读,就需要继续学习;

java虚拟机规范中有关于java虚拟机指令集的相关资料,可以学习研究一下。

随后还可以学习一下asm技术(java字节码操控框架);

jdk版本映射

jdk版本class版本j2 852j2 751j2 6.050j2 5.049jdk 1.448jdk 1.347jdk 1.246jdk 1.145

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 03:22:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/cebade53fd683ec3bdd885e74bcf6a6a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:如何使用IDEA查看java文件编译后的字节码内容.doc

本文 PDF 下载地址:如何使用IDEA查看java文件编译后的字节码内容.pdf

下一篇:返回列表
标签:字节   内容   文件   版本
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图