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

IDEA神器一鍵查看Java字節(jié)碼及其他類信息插件

 更新時間:2022年01月22日 15:22:33   作者:Guide哥  
這篇文章主要為大家介紹了一款IDEA神器,可以一鍵查看Java字節(jié)碼及其他類信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助

在這里插入圖片描述

開始推薦 IDEA 字節(jié)碼查看神器之前,先來回顧一下 Java 字節(jié)碼是啥。

何為 Java 字節(jié)碼?

Java 虛擬機(JVM)是運行 Java 字節(jié)碼的虛擬機。JVM 有針對不同系統(tǒng)的特定實現(xiàn)(Windows,Linux,macOS),目的是使用相同的字節(jié)碼,它們都會給出相同的結果。

什么是字節(jié)碼?采用字節(jié)碼的好處是什么?

在 Java 中,JVM 可以理解的代碼就叫做字節(jié)碼的文件),它不面向任何特定的處理器,只面向虛擬機。Java 語言通過字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語言執(zhí)行效率低的問題,同時又保留了解釋型語言可移植的特點。所以 Java 程序運行時比較高效,而且,由于字節(jié)碼并不針對一種特定的機器,因此,Java 程序無須重新編譯便可在多種不同操作系統(tǒng)的計算機上運行。

Java 程序從源代碼到運行一般有下面 3 步:

在這里插入圖片描述

為什么要查看 Java 字節(jié)碼?

我們在平時學習的時候,經(jīng)常需要查看某個 java 類的字節(jié)碼文件。查看字節(jié)碼文件更容易讓我們搞懂 java 代碼背后的原理比如搞懂 java 中的各種語法糖的本質(zhì)。

如何查看 Java 字節(jié)碼?

如果我們通過命令行來查看某個 class 的字節(jié)碼文件的話,可以直接通過 javap 命令,不過這種方式太原始了,效率十分低,并且看起來不直觀。

下面介紹兩種使用 IDEA 查看類對應字節(jié)碼文件的方式(javap這種方式就不提了)。

我們以這段代碼作為案例:

public?class?Main?{
????public?static?void?main(String[]?args)?{
????????Integer?i?=?null;
????????Boolean?flag?=?false;
????????System.out.println(flag???0?:?i);
????}
}

上面這段代碼由于使用三目運算符不當導致詭異了 NPE 異常。為了搞清楚事情的原因,我們來看其對應的字節(jié)碼。

使用 IDEA 自帶功能

我們點擊 View -> Show Bytecode 即可通過 IDEA 查看某個類對應的字節(jié)碼文件。

需要注意的是:查看某個類對應的字節(jié)碼文件之前確保它已經(jīng)被編譯過。

在這里插入圖片描述

稍等幾秒鐘之后,你就可以直觀到看到對應的類的字節(jié)碼內(nèi)容了。

在這里插入圖片描述

從字節(jié)碼中可以看出,我圈出來的位置發(fā)生了 拆箱操作 。

  • 裝箱:將基本類型用它們對應的引用類型包裝起來;
  • 拆箱:將包裝類型轉(zhuǎn)換為基本數(shù)據(jù)類型;

詳細解釋下就是:flag ? 0 : i 這行代碼中,0 是基本數(shù)據(jù)類型 int,返回數(shù)據(jù)的時候 i 會被強制拆箱成 int 類型,由于 i 的值是 null,因此就拋出了 NPE 異常。

Integer?i?=?null;
Boolean?flag?=?false;
System.out.println(flag???0?:?i);

如果,我們把代碼中 flag 變量的值修改為 true 的話,就不會存在 NPE 問題了,因為會直接返回 0,不會進行拆箱操作。

使用 IDEA 插件 jclasslib(推薦)

相比于 IDEA 自帶的查看類字節(jié)的功能,我更推薦 jclasslib 這個插件,非常棒!

使用 jclasslib 不光可以直觀地查看某個類對應的字節(jié)碼文件,還可以查看類的基本信息、常量池、接口、屬性、函數(shù)等信息。

在這里插入圖片描述

我們直接在 IDEA 的插件市場即可找到這個插件。我這里已經(jīng)安裝好了。

在這里插入圖片描述

安裝完成之后,重啟 IDEA。點擊View -> Show Bytecode With jclasslib 即可通過jclasslib 查看某個類對應的字節(jié)碼文件。

在這里插入圖片描述

后記

工作需要,調(diào)研了桌面端開發(fā)常用的一些技術棧,分享出來,供需要的小伙伴參考。

在這里插入圖片描述

以上就是IDEA神器一鍵查看Java字節(jié)碼及其他類信息的詳細內(nèi)容,更多關于IDEA查看Java字節(jié)碼及其他類的資料請關注腳本之家其它相關文章!

相關文章

  • 實例分析java對象中淺克隆和深克隆

    實例分析java對象中淺克隆和深克隆

    在本篇文章中我們給大家分享了關于java對象中淺克隆和深克隆的相關知識點和相關代碼內(nèi)容,有興趣的朋友們學習下。
    2018-10-10
  • SpringBoot實現(xiàn)熱部署的方式總結

    SpringBoot實現(xiàn)熱部署的方式總結

    所謂熱部署,就是在應用正在運行的時候升級軟件,卻不需要重新啟動應用,對于Java來說,熱部署就是在運行時更新Java類文件,本文將深入探討SpringBoot有哪些方式可以實現(xiàn)熱部署,感興趣的朋友可以小編一探討學習
    2023-06-06
  • SpringBoot使用SOFA-Lookout監(jiān)控的方法

    SpringBoot使用SOFA-Lookout監(jiān)控的方法

    本文介紹SpringBoot使用螞蟻金服SOFA-Lookout配合Prometheus進行監(jiān)控,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 詳解Java Proxy動態(tài)代理機制

    詳解Java Proxy動態(tài)代理機制

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著Java動態(tài)代理機制展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringBoot的ResponseEntity類返回給前端具體講解

    SpringBoot的ResponseEntity類返回給前端具體講解

    這篇文章主要給大家介紹了關于SpringBoot的ResponseEntity類返回給前端的相關資料,ResponseEntity是Spring框架中用于封裝HTTP響應的類,可以自定義狀態(tài)碼、響應頭和響應體,常用于控制器方法中返回特定數(shù)據(jù)的HTTP響應,需要的朋友可以參考下
    2024-11-11
  • JavaWeb工程web.xml基本配置過程解析

    JavaWeb工程web.xml基本配置過程解析

    這篇文章主要介紹了JavaWeb工程web.xml基本配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • spring boot實現(xiàn)驗證碼功能

    spring boot實現(xiàn)驗證碼功能

    Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。這篇文章主要介紹了spring boot實現(xiàn)驗證碼功能,需要的朋友可以參考下
    2018-04-04
  • jackson反序列化時如何忽略不需要的字段

    jackson反序列化時如何忽略不需要的字段

    這篇文章主要介紹了jackson反序列化時如何忽略不需要的字段,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springboot實現(xiàn)郵箱驗證碼功能

    springboot實現(xiàn)郵箱驗證碼功能

    這篇文章主要為大家詳細介紹了springboot實現(xiàn)郵箱驗證碼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Maven 常用插件的詳細整理

    Maven 常用插件的詳細整理

    這篇文章主要介紹了Maven 常用插件的詳細整理的相關資料,這里整理了maven的常用插件需要的朋友可以看下,需要的朋友可以參考下
    2017-08-08

最新評論

保山市| 博白县| 岳池县| 五台县| 新昌县| 鄱阳县| 额济纳旗| 合川市| 凤凰县| 确山县| 开化县| 阜城县| 东辽县| 黄陵县| 镇巴县| 庆云县| 平陆县| 游戏| 任丘市| 巴楚县| 肇庆市| 九台市| 会宁县| 岑巩县| 桂东县| 壶关县| 镇原县| 柘城县| 银川市| 合山市| 承德县| 滕州市| 永清县| 无为县| 平昌县| 西乌珠穆沁旗| 阳原县| 通城县| 北流市| 元朗区| 伊川县|