因为赋值的“结果”是赋值...所以在第二种情况下它仍然是一个表达式。 表达式要求条件是表达式,该表达式由第二个表达式满足,但不由第一个表达式满足。实际上,您的两个代码段是:boolean
if
boolean
int a;
a = 1;
if (a) { }
和
boolean b;
b = true;
if (b) { }
从该扩展中是否可以清楚地看出,第二个版本将编译,但不是第一个版本?
这是不直接与真假进行比较的一个原因。所以我总是会写而不是和代替.诚然,当 和 是变量时,您仍然会遇到问题 - 那里的拼写错误可能会导致问题。我不能说它曾经发生在我身上。if (b)
if (b == true)
if (!b)
if (b == false)
if (b == c
b
c
boolean
编辑:响应您的编辑 - 各种赋值都可以在语句中使用 - 和循环等,只要整体条件表达式是.例如,您可能具有:if
while
boolean
String line;
while ((line = reader.readLine()) != null)
{
// Do something with a line
}
虽然我通常避免在疾病中产生副作用,但这个特定的成语通常对上面显示的示例有用,或者使用.基本上,它是“虽然我读到的值很有用,但使用它。InputStream.read