为什么布尔值TRUE不为TRUE?

时间:2013-02-19 22:00:19

标签: java boolean

我在debbuging我的Android应用程序时发现了奇怪的行为。

有表达式:

if (r == true)

其中var r的值为true,但整个语句为false。我尝试使用对象Boolean和原始类型boolean

我确信我犯了一些基本错误。

这是debbuger的屏幕。

enter image description here

修改

我正在使用java.lang.Boolean

方法isSyncRequired返回Boolean.TRUE,并在if-else块中进行比较。

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

不行。

3 个答案:

答案 0 :(得分:11)

因为您使用的是资本-B Boolean,它是一个对象,所以==使用引用相等语义。

你应该做的只是

if (r)

没有必要测试它是否等于真。或者内联它:

if (isSyncRequired(s)) {

答案 1 :(得分:1)

==通过引用进行比较。您正在将Boolean对象与boolean值进行比较。

改为使用if (r)

答案 2 :(得分:1)

您应该取消Boolean值。尝试

if (r.booleanValue())

if (r.booleanValue() == true)