随便玩耍,我注意到除了布尔值以外,我不能使用任何类型的if(a == b == c)。
您不能使用任何类型来执行此操作,但是
boolean因为此比较链将从左侧到右侧进行评估。第一个比较将简化为
true或
false必须与链中的第三个值进行比较的值(并且此检查的结果将与第四个值进行比较,依此类推,直到链的末尾)。至于原始值,您只能比较相同类型的原始值(例如boolean和boolean将起作用,而double和boolean将不起作用)-这就是为什么只能使用booleans的原因-
因为
==返回的是相同的值输入为链中所有值。
这里存在危险:所有比较链的结果都不等于
true您提供的所有值都等于时
true。您可以从第二个输出中看到它:
true==
false==
false提高了
true,如果您从左到右评估它(在程序执行过程中发生),这是正确的结果,但是如果 您认为 必须同时评估这个比较链,这
似乎是错误的 。正确的方法是两个执行两个显式比较: __
if (a == b && b == c) { // do something}


