Java if语句同时具有赋值和相等检查OR
-d 时如何工作?
public static void test() {
boolean test1 = true;
if (test1 = false || test1 == false) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
}
为什么此打印为FALSE?
1
运行并检查。如果分配为false和分配为true,则查看输出的布尔值。然后阅读OR的工作原理。
—
Pratik 2015年
我想告诉您,这段代码在调试模式下给出的是TRUE值,而在运行模式下给出的是FALSE值...为什么这样??? ...(我将断点放在if条件下)...
—
CoderNeji
test1=false
,test1==false
is false
,false || false
is false or false
is是false
。
我知道您不是在征求意见,但由于以下答案确定了优先事项,因此有以下几种做法可以帮助我避免麻烦(当我坚持这些原则时):(1)始终使用括号而不是100%某些优先级,或者为了帮助其他开发者更容易阅读。不要以为其他人会记住所有运算符的优先规则(2)除了非常简单的if条件之外,通常应避免if赋值以减少混乱。有一些常见的例外(特别是对I / O,网络等进行简单检查)。只是我的两分钱。
—
rimsky 2015年
因为
—
jono
test1 = true