在專案中應該使用Boolean還是使用boolean?

gistmap發表於2021-01-18

起因

在公司看程式碼時,看到了使用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,我就不需要去管他了。
原因還是以上那些。

個人淺見,歡迎探討交流。

相關文章