为什么java需要双等号?

jav*_*ava 6 java

为什么java在if语句中比较Integers时需要双等号(==)?

例如

if(x = 3.141)
     System.out.println("x is equal to pi.");
Run Code Online (Sandbox Code Playgroud)

是不正确的,它应该是

if(x == 3.141)
     System.out.println("x is equal to pi.");
Run Code Online (Sandbox Code Playgroud)

我知道"=="用于比较整数,"="用于设置整数值,但为什么在if语句中这仍然是真的?

是否允许在if语句中为变量赋值(或启动新变量)?

有没有理由让任何人想要在一个if语句中为变量分配一个新值(如果是这样请提供一个例子)?

这似乎是一个应该已经有答案的问题,但我无法在这里找到一个或使用谷歌,如果这是一个重复的问题,请告诉我,我会立即删除它.

Thi*_*ilo 10

如果=有时进行分配,有时比较,这取决于你使用它的上下文,难道不会令人困惑吗?

这听起来像个坏主意,会引入错误.

另外,当前语法与C和C++兼容,因此很多人都熟悉它.

有没有理由有人想要在if语句中为变量赋一个新值(如果是这样请提供一个例子)?

它在while循环中很常见:

int b;
while ((b=in.read()) != -1){
Run Code Online (Sandbox Code Playgroud)