`if(x = 0)`是否是Java可编译的

Gra*_*nat 4 java convention compilation version conditional-statements

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

2.5.2在比较的左侧放置常数

所以他建议使用

if ( 1 == something ) {…}    
if ( 0 = x ) { …}
Run Code Online (Sandbox Code Playgroud)

代替

if ( something == 1 ) {…}    
if ( x = 0 ) { …}  
Run Code Online (Sandbox Code Playgroud)

我的天啊 !!!

他通过这样说来激励这一点:

"虽然它们都是等价的,至少在第一次检查时,左边的代码编译而右边的代码没有."

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

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

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

我使用目标和源1.2编译Jre7编译器仍然会引发编译器错误.不幸的是我没有Java 1.1编译器:9

我的问题是:

if(x = 0); 是否可与旧版Java编译器兼容?

pop*_*shi 5

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

  • 即使它确实可以编译,我也不推荐这种语法;) (2认同)

Spr*_*ner 5

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

其次0=x不对.0 = x表示您将x的值存储在0中,这是永远不可能的.

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