4

Scott Ambler 在他的《 Java 编码标准》一书中说,我很感兴趣,我引用:

2.5.2 将常数放在比较的左侧

所以他建议使用

if ( 1 == something ) {…}    
if ( 0 = x ) { …}

代替

if ( something == 1 ) {…}    
if ( x = 0 ) { …}  

我的天啊 !!!

他说:

“虽然它们都是等价的,但至少在第一次检查时,左边的代码可以编译,而右边的代码不能。”

据我所知(当我开始编写 Java 时,Java 14. 已经在使用中),这两种情况都会引发编译器错误。

从 Ambler 语句开始,我尝试搜索 Java 语法if ( x = 0 );是否可编译。

你能帮我解决这个问题吗?我搜索了不同版本的 JSR,但没有发现任何可能表明该代码正在其他 Java 版本上编译的更改。

我使用目标和源代码 1.2 使用 Jre7 编译器进行编译,但仍然引发编译器错误。不幸的是,我没有 Java 1.1 编译器:9

我的问题是:

if(x = 0);是否可以与旧版本的 Java 编译器一起编译?

4

2 回答 2

5

它是不可编译的。if (x=true)但是,如果 x 是布尔值,仍然是。

于 2013-10-16T07:37:04.963 回答
5

这个条件if ( x = 0 ) { …} if ( 0 = x ) { …}永远不会编译。这是因为if接受布尔类型但是x=0是赋值运算符

其次0=x是不对的。0=x 意味着您将 x 的值存储在 0 中,这是不可能的。

在这种情况下if ( something == 1 ) {…} instead of if ( 1 == something ) {…}是有效的,并且可以很好地与当前的整数比较一起使用,但是对于字符串之间的比较而不是==更好地使用请参阅此链接以了解与链接 1和链接 2之间.equals() 的区别==.eqauls()

于 2013-10-16T07:38:15.400 回答