国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java三目運算中隱藏的自動拆裝箱

Java三目運算中隱藏的自動拆裝箱

2021-06-11 13:32by Boyizmen Java教程

這篇文章主要介紹了Java三目運算中隱藏的自動拆裝箱,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

最近修改線上bug的時候排查了一個十分隱藏的bug,直接上代碼:

?
1
2
3
integer a = null;
boolean flag = true;
integer b = flag ? a : 0;

乍一看是沒什么毛病的,但是已運行就會發現報空指針,在idea里面也會警告可能有空指針,這是什么原因呢?

直接看字節碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
0: aconst_null
1: astore_1
2: iconst_1
3: istore_2
4: iload_2
5: ifeq     15
8: aload_1
9: invokevirtual #2       // method java/lang/integer.intvalue:()i
12: goto     16
15: iconst_0
16: invokestatic #3      // method java/lang/integer.valueof:(i)ljava/lang/integer;
19: astore_3
20: getstatic   #4      // field java/lang/system.out:ljava/io/printstream;
23: aload_3
24: invokevirtual #5      // method java/io/printstream.println:(ljava/lang/object;)v
27: return

可以看到字節碼中調用了`integer.valueof()`方法,因為我們代碼中一個值使用的是0(基本數據類型int),編譯器就會進行自動拆裝箱(成int),

雖然三目運算的后面邏輯不會執行,但是隱藏的自動拆裝箱會執行`integer.valueof()`方法,也就有了空指針異常。

為了進一步驗證存在自動拆裝箱,把代碼修改一下:

?
1
2
3
integer a = null;
boolean flag = true;
integer b = flag ? a : new integer(0);

再看字節碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
0: aconst_null
1: astore_1
2: iconst_1
3: istore_2
4: iload_2
5: ifeq     12
8: aload_1
9: goto     20
12: new      #2      // class java/lang/integer
15: dup
16: iconst_0
17: invokespecial #3      // method java/lang/integer."<init>":(i)v
20: astore_3
21: getstatic   #4      // field java/lang/system.out:ljava/io/printstream;
24: aload_3
25: invokevirtual #5      // method java/io/printstream.println:(ljava/lang/object;)v

可以看到,由于重新創建了一個`integer`對象,并沒有基本類型的存在,也就不存在自動拆裝箱,修改過后的代碼也就不會有問題了,但是idea的警告依舊存在。

這是一個非常隱蔽,也非常容易忽略和踩坑的一個地方,三目運算符的使用應該保證后面的值都是常量,或者統一類型,不然就會出現上面的情況。

更甚三目運算符本身提供的作用也不過是為了簡化邏輯,在其中放入過多的邏輯判斷也就違背了其初衷。

總結

以上所述是小編給大家介紹的java三目運算中隱藏的自動拆裝箱,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

原文鏈接:https://minei.me/archives/422.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黑人精品 | 伊人久久综合精品一区二区三区 | 一区二区中文 | 午夜电影网站 | 婷婷综合激情 | 91精品一区二区 | 中文字幕在线观看免费 | 中文字幕一区二区三区精彩视频 | 中文字幕一区在线观看视频 | 激情综合色综合久久综合 | 99热在线观看免费 | 日本jizz在线观看 | 免费三级黄色片 | 福利片在线观看 | 蜜桃视频网站在线观看 | 日本成人 | 欧美精品一区二区三区四区五区 | 久久99视频| 久久99国产精一区二区三区 | 欧美久久久久 | 91天堂网 | 国产亚洲一区二区三区在线观看 | 亚洲高清电影 | 久久精品这里有 | 精品中文字幕在线 | 这里只有久久精品 | 极品女神高潮呻吟av久久 | 久章操| 91色视频在线观看 | 日本精品国产 | 日本电影网址 | 黄色一级毛片网站 | 久久久精品天堂 | 久久久精品久久久久 | 少妇精品久久久久久久久久 | 免费观看国产视频在线 | 君岛美绪一区二区三区在线视频 | 亚洲欧美激情精品一区二区 | 福利片网址 | 91av导航 | 久久精品麻豆 |