起因
在公司看程式碼時,看到了使用Boolean物件來完成業務邏輯判斷的操作。和我的習慣不一致,於是引起了一些反思。
boolean和Boolean的差別我們就不說了,我們僅探討使用boolean與Boolean的場景。
樣例 1 沒必要的拆裝箱
Boolean isSingle = true;
boolean isMarried = Boolean.FALSE;
這是應該極力避免的,無謂的拆裝箱操作會有一定效能的影響。
樣例 2 業務中常見的使用方式
Boolean isSingle = Boolean.FALSE;
// 一些其他操作,可能改變isSingle的值
if (!isSingle && otherBoolean) {
// 一些操作
} else {
// 一些操作
}
我會覺得這裡使用boolean會更好,甚至找不到使用Boolean物件的理由。
而使用boolean有更多的好處,比如:
- 更少的記憶體佔用,基本型別和包裝類的差距。即便我們不知道在當前JVM下,boolean具體佔幾個位元組。Boolean還是比boolean大得多
- 如果是以上程式碼,你甚至不用去初始化。基本型別的好處:有預設值。這也變相意味著不會發生NPE。
- 少敲幾次鍵盤
那什麼時候需要使用Boolean型別?
第一個就是我們在使用容器內需要裝布林值的時候,這時候我們別無選擇,只能使用Boolean類。
其次,翻了Boolean型別的原始碼,並看了看具體的幾個方法。我覺得比較實用的還是toString和兩個valueOf。
Boolean非常適用於與String相互轉換的場景使用。
如我們對接一個三方介面,其傳的是字串true
,false
。我們則可以使用Boolean.valueOf(target)
來轉換成Boolean物件。
實體類中應該使用Boolean還是boolean
這一條大家應該都覺得使用Boolean比較好,但我在使用JPA的過程中還是覺得使用boolean更有優勢。
如private boolean isDeleted
,我就不需要去管他了。
原因還是以上那些。
個人淺見,歡迎探討交流。