0

如果我在一个类中将值设置为 true,例如

static boolean mIsPremium = true;

有时我只会得到正确的值,就像我使用双等号 (==) 一样,我将始终返回真值。

if (firstClass.mIsPremium == true){
    do stuff
} else {
    do other stuff
}

如果我只使用一个等号 (=) 它将返回一个真值,当我在第一类中将 mIsPremium 设置为 false 时会发生这种情况。

if (firstClass.mIsPremium = true){
    do stuff
} else {
    do other stuff
}

我尝试了许多配置,使用两个 = 符号,使用一个 = 符号,包括第二类中的一个新布尔值,它有自己的值取决于第一个布尔值的值......我所做的一切似乎都无法正常工作。

如何从另一个类调用布尔值并在第二个类中正确使用该值。如果它是真的,我希望它在二等舱里是真的,如果它是假的,我希望它在二等舱里是假的。

4

4 回答 4

4

你对运营商感到困惑。

=

是赋值

==

检查相等性

if (firstClass.mIsPremium = true){

上面的行将其视为一个语句,并将值 true 分配给mIsPremium 并继续进行。

if (firstClass.mIsPremium == true){ 

检查两个操作数的值是否相等,如果是则条件为真。

你所做的是

if (firstClass.mIsPremium){
    do stuff
} else {
    do other stuff
}
于 2013-09-07T10:50:19.790 回答
2

One = sing 是一个任务,一个永远为真的任务。

(a = b) #-> always true, it doesn't matter if a or b are false or true

二 = sing 是一个比较,结果取决于 a 和 b 的值是多少。

(a == b) #-> true if and only if a has the same value of b
于 2013-09-07T10:52:14.877 回答
2

布尔值只能有真/假两个值。无需使用 == 或 =

只需使用

if (firstClass.mIsPremium)     //if mIsPremium is true
{     
    do stuff
} else {
    do other stuff
}
于 2013-09-07T10:55:12.763 回答
1

您无需使用任何 = 符号即可

if(firstClass.mIsPremium) { } // check for premium

或者

if(!firstClass.mIsPremium) { } // check for not premium
于 2013-09-07T10:48:15.690 回答