回答
第一個是正確的,如果你想null
Boolean
。
我個人不喜歡null
價值觀和喜歡使用boolean
,從而無法null
缺省情況下爲false
。
爲了理解第二條語句是否需要了解Java原始包裝器。 A Boolean
只是一個圍繞boolean
的對象封裝;當您直接聲明:
Boolean b = false;
有一些自動裝箱回事,如果你聲明new Boolean
然後創建一個新的,獨立的Boolean
對象,而不是讓這基本上等同於寫
Boolean b = Boolean.FALSE;
編譯器(可能)重新使用現有的引用。
它很少(如果有的話)使用基本包裝類型的構造函數是有意義的。
絕對不需要爲布爾創建一個新對象。 這是javadoc所說的
注意:使用此構造函數很少合適。除非需要新實例,否則靜態工廠的valueOf(boolean)通常是更好的選擇。它可能會產生更好的空間和時間表現。
+1。但爲什麼不僅僅依靠自動裝箱? – Axel
@Axel,我總是依靠自動裝箱,我引用javadoc來解釋構造函數。 –
○Boolean b = new Boolean(null);
使用Boolean(String)
構造函數和b
內部布爾值設置爲false
和是不同的設置b
參考爲空。
Boolean b = null;
System.out(b.boolValue()); throws a NullPointerException
但
Boolean b = new Boolean(null);
System.out(b.boolValue()); will print `false`
如果你只需要兩個狀態值(一個布爾值)使用原始的布爾值;如果你需要一個三態對象(null, true, false
)使用Boolean
對象並設置對象的引用 - 如在第一個例子 - 以null
都正確申報
Boolean b = null;
這是不變的創造,它會去常量池內存。您需要使用==
運算符來比較兩個布爾常量。
Boolean b = new Boolean(null);
這是對象的創建,它會去堆memory.You需要使用.equals()
方法來比較兩個布爾對象。
- 1. Pythonic方式初始化布爾值
- 2. 正確初始化localstorage的方法?
- 3. 初始化變量的正確方法
- 4. 如何初始化布爾值?
- 5. 初始化數組與布爾值
- 6. 數據類型原始對象沒有正確初始化布爾值
- 7. 布爾結腸初始化
- 8. 枚舉不初始化正確的值
- 9. 正確的方式初始化NSMutableArray
- 10. 更正python中已初始化對象的正確方法
- 11. Swift 2.2 - 以編程方式初始化UIImageView的正確方法
- 12. RevMob無法正確初始化[iOS Xcode]
- 13. DataTable無法正確初始化?
- 14. JOGL + Swing無法正確初始化
- 15. 無法正確初始化數組
- 16. 更改布爾值,初始值
- 17. 初始化數組正確
- 18. setTranslationY未正確初始化
- 19. Singleton未正確初始化
- 20. JMockit未正確初始化
- 21. 明確布爾操作符 - 不能返回,測試,初始化布爾
- 22. 初始化方法
- 23. 優化隨機布爾值的方法
- 24. 正確初始化std :: byte的容器的方法:
- 25. 什麼是正確的方法偷懶初始化Objective-C的
- 26. 正確的方法來初始化類的屬性
- 27. 初始化方法的返回值
- 28. 托爾初始化
- 29. NSJSONSerialization無法正確映射布爾值
- 30. 初始化Python中的布爾值的大名單
我會說第一個。第二個有點沒道理......但那就是我。 – Jakob
爲什麼無論如何都要有一個空布爾值? – Edeph
在一個我找不到它是真還是假的地方 – Abichellam