为什么布尔TRUE不是TRUE?
问题描述:
我在debbuging我的android应用程序中发现了奇怪的行为。为什么布尔TRUE不是TRUE?
有表达:
if (r == true)
其中var r
的值为true
但整个陈述是错误的。我尝试使用对象Boolean
以及原始类型boolean
。
我确信我犯了一些基本错误。
这是来自debbuger的屏幕。
编辑:
我使用java.lang.Boolean
。
方法isSyncRequired
返回Boolean.TRUE
并且它在if-else块中进行比较。
if(isSyncRequired(s))
if (r)
if (r == true)
不工作。
答
因为您使用的是大写字母B Boolean
,因此==
使用引用相等语义。
,你应该做的事情仅仅是
if (r)
有没有必要,以测试它是否等于true。或内联:
if (isSyncRequired(s)) {
答
==
通过参考进行比较。您正在比较Boolean
对象与boolean
值。
改为使用if (r)
。
答
您应该清除Boolean
值。尝试
if (r.booleanValue())
或
if (r.booleanValue() == true)
我忘了...我也尝试声明'如果(R)'。 – misco 2013-02-19 22:02:51
出于好奇,为什么你只是在做:'if(isSyncRequired(s))'或者甚至'if(r)'你现在比较一个布尔值来查看它是否为真,而你可以直接使用这个值。而当使用布尔使用等于不== == – 2013-02-19 22:03:00
我首先使用'if(isSyncRequired(s))',但应用程序已经有了奇怪的行为。然后我开始发现错误。我在if(r == true)后面的if(r)'后改变它。 – misco 2013-02-19 22:08:05