[英]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 而言,這是一個實現細節。)
此外,如果您使用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.