在項目中應該使用Boolean還是使用boolean?
起因
在公司看程式碼時,看到了使用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
,我就不需要去管他了。
原因還是以上那些。
個人淺見,歡迎探討交流。