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// (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反编译之后的了,并不能看到字节码内容。
在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字节码操控框架);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持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 条评论) |