簡體   English   中英

JVM 是否專門緩存 Boolean.(TRUE|FALSE)?

[英]Does JVM specifically caches Boolean.(TRUE|FALSE)?

給定Boolean值,

Boolean b = getSome();

是以下表達

return Boolean.TRUE == b; // possibly false even b.booleanValue() is true?

平等的( 相等的 ) 到

return Boolean.TRUE.equal(b);

JLS 是否指定關於Boolean.(TRUE|FALSE)的任何常量保留?

JLS 說裝箱產生的值可能有緩存行為。 但是,它沒有強制執行。 (就 JLS 而言,這是一個實現細節。)

參見JLS 5.1.7

此外,如果您使用new創建一個Boolean ,則可以保證您將獲得一個新的 object。

請參見JLS 15.9.4

“一個 class 實例創建表達式的值是對指定 class 的新創建的 object 的引用。每次計算表達式時,都會創建一個新的 object。

例如:

Boolean falze = new Boolean(false);
if (Boolean.FALSE != falze) {
    System.out.println("falze is not FALSE");
}

將打印消息。


JLS 是否指定了 Boolean.(TRUE|FALSE) 的任何常量保存?

JLS 沒有提到這些常量。

但是, java.lang.Boolean的 javadoc 確實提到它們是常量,而Boolean是不可變類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM