五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

IDEA激活碼,jclasslib: 一款I(lǐng)DEA字節(jié)碼查看神器

2023-05-05 13:35 作者:IDEA精選教程  | 我要投稿


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

何為 Java 字節(jié)碼?

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

字節(jié)碼

在 Java 中,能夠被 JVM 理解的代碼被稱為“字節(jié)碼”(即擴(kuò)展名為 .class 的文件)。它不針對(duì)任何特定的處理器,只針對(duì)虛擬機(jī)。Java 語(yǔ)言通過字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問題,同時(shí)保留了解釋型語(yǔ)言可移植的特點(diǎn)。因此,Java 程序運(yùn)行時(shí)比較高效。由于字節(jié)碼不針對(duì)特定的機(jī)器,因此 Java 程序無需重新編譯便可在多種不同操作系統(tǒng)的計(jì)算機(jī)上運(yùn)行。

Java 程序從源代碼到運(yùn)行一般有下面 3 步:


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

在平時(shí)的學(xué)習(xí)中,我們經(jīng)常需要查看某個(gè) Java 類的字節(jié)碼文件。查看字節(jié)碼文件可以更容易地理解 Java 代碼背后的原理,例如各種語(yǔ)法糖的本質(zhì)。

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

如果我們想查看某個(gè)類的字節(jié)碼文件,一種方法是通過命令行使用 javap 命令。不過這種方法效率低,且不太直觀。

下面介紹兩種在 IDEA 中查看類對(duì)應(yīng)字節(jié)碼文件的方式(javap 方式不再提及)。

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

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

使用 IDEA 自帶功能

我們點(diǎn)擊?View -> Show Bytecode?即可通過 IDEA 查看某個(gè)類對(duì)應(yīng)的字節(jié)碼文件。

注意

查看某個(gè)類對(duì)應(yīng)的字節(jié)碼文件之前需確保它已經(jīng)被編譯過。

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

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

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

詳細(xì)解釋如下:在代碼行 flag ? 0 : i 中,0 是基本數(shù)據(jù)類型 int。在返回?cái)?shù)據(jù)時(shí),i 會(huì)被強(qiáng)制拆箱成 int 類型。由于 i 的值為 null,因此會(huì)拋出 NPE 異常。

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

如果我們將代碼中的 flag 變量的值修改為 true,就不會(huì)出現(xiàn) NPE 問題,因?yàn)樗鼘⒅苯臃祷?0,而不進(jìn)行拆箱操作。

使用 IDEA 插件 jclasslib(推薦)

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

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

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

安裝完成之后,重啟 IDEA。點(diǎn)擊?View -> Show Bytecode With jclasslib?即可通過?jclasslib?查看某個(gè)類對(duì)應(yīng)的字節(jié)碼文件。


IDEA激活碼,jclasslib: 一款I(lǐng)DEA字節(jié)碼查看神器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
专栏| 雷山县| 高青县| 运城市| 大洼县| 丁青县| 满洲里市| 宁波市| 法库县| 阳高县| 吐鲁番市| 陕西省| 延安市| 成都市| 栖霞市| 高碑店市| 措美县| 神农架林区| 岐山县| 泰顺县| 永丰县| 孟津县| 仙桃市| 思茅市| 名山县| 德兴市| 张家口市| 衡阳市| 枣庄市| 通许县| 南昌市| 铁岭市| 韶关市| 南投县| 松溪县| 高雄县| 武邑县| 三明市| 招远市| 连城县| 四川省|