【发布时间】:2011-01-24 12:55:47
【问题描述】:
我知道我们不能像在其他几种语言中使用的那样在 java 中的 if 语句中使用赋值运算符。
那是
int a;
if(a = 1) { }
会报编译错误。
但是下面的代码可以正常工作,怎么样?
boolean b;
if(b = true) { }
编辑:这是规则不能在 if 语句中使用赋值的例外情况。
【问题讨论】:
-
养成在 if 语句中将常量放在首位的习惯并不是一个坏主意......即:if (true == b) {} 和 if (1 == a ) {} 这个习惯保证如果你写 = 而不是 ==,编译器会打你。
-
@Ollie:对此的看法大相径庭。就可读性而言,这是个坏主意。此外,它在 Java 等语言中没有任何好处,因为这里不会出现混淆。我的意思是,从来没有人用
if (a == true)写过测试,对吧? -
@Konrad。你在 Java 中是对的,但是对于这个使用 PERL 和其他一些语言的 C 翻新,它为我节省了很多次。
-
在很多情况下都不起作用,例如
if ( $a == $b )。读起来很糟糕,没有人说“5 是一个”。在编写if条件时更加小心,IMO 更容易。 -
@Ollie 现在大多数编译器都有一个选项,如果你写
if(foo = x)或类似的东西会警告你。
标签: java compiler-errors scjp