最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容

 更新時(shí)間:2022年03月12日 14:37:08   作者:morningcat2018  
這篇文章主要介紹了如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

首先編寫(xiě)一個(gè)java類(lèi) 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);
? ?}
}

經(jīng)過(guò)編譯后,生成 StringDemo1.class文件

使用IDEA查看編譯之后的文件內(nèi)容:

//
// 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);
? ?}
}

可以看出內(nèi)容已經(jīng)是經(jīng)過(guò)IDEA反編譯之后的了,并不能看到字節(jié)碼內(nèi)容。

使用jclasslib反編譯工具

在IDEA中搜索插件jclasslib bytecode viewer,然后進(jìn)行安裝,重啟IDEA。

再次打開(kāi)StringDemo1.java文件,在IDEA菜單欄上打開(kāi)View -> Show Bytecode,即可以看到字節(jié)碼文件內(nèi)容:

// 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
}

以上編譯內(nèi)容是我在JDK1.8u202環(huán)境下進(jìn)行編譯的,所以開(kāi)頭才會(huì)有class version 52.0 (52)的標(biāo)識(shí)。

至于字節(jié)碼怎么讀,就需要繼續(xù)學(xué)習(xí);

Java虛擬機(jī)規(guī)范中有關(guān)于Java虛擬機(jī)指令集的相關(guān)資料,可以學(xué)習(xí)研究一下。

隨后還可以學(xué)習(xí)一下ASM技術(shù)(Java字節(jié)碼操控框架);

JDK版本映射

JDK版本class版本
J2SE 852
J2SE 751
J2SE 6.050
J2SE 5.049
JDK 1.448
JDK 1.347
JDK 1.246
JDK 1.145

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring事務(wù)處理流程和原理詳解

    Spring事務(wù)處理流程和原理詳解

    這篇文章主要介紹了Spring事務(wù)處理流程和原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java面向?qū)ο笾^承、構(gòu)造方法、重寫(xiě)、重載

    Java面向?qū)ο笾^承、構(gòu)造方法、重寫(xiě)、重載

    本章具體介紹了什么是構(gòu)造方法、繼承、重寫(xiě)、重載以及創(chuàng)建方法,整篇文章用老司機(jī)和人類(lèi)來(lái)舉例,圖解穿插代碼案例,需要的朋友可以參考下
    2023-03-03
  • mybatis中sql語(yǔ)句CDATA標(biāo)簽的用法說(shuō)明

    mybatis中sql語(yǔ)句CDATA標(biāo)簽的用法說(shuō)明

    這篇文章主要介紹了mybatis中sql語(yǔ)句CDATA標(biāo)簽的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 一文解讀Spring Bean的生命周期

    一文解讀Spring Bean的生命周期

    這篇文章主要給大家詳細(xì)解讀Spring Bean的生命周期,文中有詳細(xì)的代碼示例,對(duì)我們學(xué)習(xí)Spring Bean的生命周期有一定的幫助,感興趣的同學(xué)跟著小編一起來(lái)學(xué)習(xí)吧
    2023-07-07
  • Spring Boot LocalDateTime格式化處理的示例詳解

    Spring Boot LocalDateTime格式化處理的示例詳解

    這篇文章主要介紹了Spring Boot LocalDateTime格式化處理的示例詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】

    Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】

    這篇文章主要介紹了Java實(shí)現(xiàn)的打地鼠小游戲,結(jié)合完整實(shí)例形式分析了Java多線(xiàn)程操作及鍵盤(pán)按鍵響應(yīng)實(shí)現(xiàn)的打地鼠游戲功能相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行

    Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行

    這篇文章主要介紹了Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java異常類(lèi)型及處理

    Java異常類(lèi)型及處理

    這篇文章主要介紹了Java異常出現(xiàn)原因,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • idea遠(yuǎn)程Debug部署在服務(wù)器上的服務(wù)

    idea遠(yuǎn)程Debug部署在服務(wù)器上的服務(wù)

    在開(kāi)發(fā)的時(shí)候我們通常在本地代碼上debug程序,但是服務(wù)部署到了開(kāi)發(fā)環(huán)境服務(wù)器上,如何遠(yuǎn)程調(diào)試,本文主要介紹了idea遠(yuǎn)程Debug部署在服務(wù)器上的服務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程

    Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程

    WebSocket protocol 是HTML5一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。一開(kāi)始的握手需要借助HTTP請(qǐng)求完成握手。本文給大家介紹Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05

最新評(píng)論

阿拉善右旗| 吉水县| 张家港市| 阿拉善盟| 东乡| 安乡县| 焉耆| 海口市| 西峡县| 磴口县| 莱州市| 元朗区| 商水县| 普洱| 阳西县| 民乐县| 汽车| 云浮市| 马山县| 娱乐| 温州市| 墨竹工卡县| 华蓥市| 墨竹工卡县| 保定市| 昌黎县| 裕民县| 桓仁| 买车| 吉林市| 青海省| 平江县| 齐河县| 磐石市| 且末县| 年辖:市辖区| 若尔盖县| 赤水市| 崇文区| 遂溪县| 保德县|