簡體   English   中英

為什么布爾值TRUE不為TRUE?

[英]Why Boolean TRUE is not TRUE?

我在debbuging我的Android應用程序時發現了奇怪的行為。

有表達式:

if (r == true)

其中var r的值為true但整個語句為false。 我嘗試使用對象Boolean和原始類型boolean

我確信我犯了一些基本錯誤。

這是debbuger的屏幕。

在此輸入圖像描述

編輯:

我正在使用java.lang.Boolean

方法isSyncRequired返回Boolean.TRUE並在if-else塊中進行比較。

if(isSyncRequired(s))
if (r)
if (r == true)

不要工作。

因為你使用的是大寫B Boolean ,它是一個對象,所以==使用引用相等語義。

你應該做的只是

if (r)

沒有必要測試它是否等於真。 或者內聯它:

if (isSyncRequired(s)) {

==按參考比較。 您正在將Boolean對象與boolean值進行比較。

使用if (r)代替。

您應該取消裝箱Boolean值。 嘗試

if (r.booleanValue())

要么

if (r.booleanValue() == true)

暫無
暫無

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

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