成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

推薦一款IDEA神器!一鍵查看Java字節碼以及其他類信息

新聞 前端
這里分享一下一款IDEA神器。非常實用!你會愛上它的!

這里分享一下一款IDEA神器。非常實用!你會愛上它的!

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

何為 Java 字節碼?

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

什么是字節碼?采用字節碼的好處是什么?

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

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

為什么要查看 Java 字節碼?

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

如何查看 Java 字節碼?

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

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

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

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

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

使用 IDEA 自帶功能

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

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

稍等幾秒鐘之后,你就可以直觀到看到對應的類的字節碼內容了。

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

  • 裝箱 :將基本類型用它們對應的引用類型包裝起來;
  • 拆箱 :將包裝類型轉換為基本數據類型;

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

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

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

使用 IDEA 插件 jclasslib(推薦)

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

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

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

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

 

責任編輯:張燕妮 來源: segmentfault
相關推薦

2020-05-11 09:40:47

IDEA代碼神器

2019-02-25 10:18:43

工具代碼測試

2014-01-13 15:00:51

InxiLinux硬件

2020-04-30 10:45:14

IDEA代碼神器工具

2022-10-09 10:11:30

Python爬蟲神器

2021-04-27 09:00:59

PythonAidLearning編程神器

2020-08-28 10:40:13

PythonFaker數據

2020-08-17 10:10:34

DockerWatchtowerLinux

2020-10-10 14:57:16

代碼開發工具

2019-10-11 11:00:53

Nginx神器前端

2024-03-26 12:22:03

Visio軟件

2023-09-06 08:19:53

2020-02-17 07:20:22

SSH遠程連接工具Linux

2023-03-27 16:44:23

2022-07-06 08:32:35

Python代碼Matplotlib

2022-04-20 09:26:08

Mock前端開發工具

2025-01-08 11:54:05

2021-06-09 09:52:29

開源Pyroscope代碼

2020-12-03 09:33:58

前端開發工具

2025-04-07 08:10:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久久久久久久吃药 | 久久精品久久久 | 91一区二区| 亚洲成人精品久久 | h漫在线观看 | 超碰精品在线 | 成人久久久 | 欧美性受xxx| 精品国产乱码久久久久久丨区2区 | 99色综合 | 丁香久久 | 亚洲精品在线观 | 亚洲精久 | 久久伦理中文字幕 | 在线成人免费av | 国产精品成人国产乱一区 | 男人的天堂亚洲 | 奇米超碰在线 | 国产亚洲精品美女久久久久久久久久 | 国产精品久久久久久久免费观看 | 午夜寂寞影院在线观看 | 午夜国产 | 欧美另类视频在线 | 岛国午夜 | 精品伊人久久 | 免费在线视频精品 | av中文字幕在线观看 | 日韩伦理电影免费在线观看 | 亚洲一级黄色 | 国产一区二区三区免费 | 国产成人精品亚洲日本在线观看 | 欧美日韩国产三级 | 精品福利在线 | 久久精品中文字幕 | 毛片免费看 | 中文字幕在线视频精品 | 国产成人精品一区二区三 | 国产我和子的乱视频网站 | 国产精品亚洲第一 | 欧美国产一区二区 | www.色53色.com |