[在Java中,为什么我可以将double加到int但不能将double赋给int? [重复]

问题描述 投票:0回答:1

在Java中,给出:

    int x = 4;
    double y = 4.5123;

为什么要编码:

    x += y;  // in my head I think, "The new value of x is the old value plus y."

但是我不能简单地这样分配:

    x = y;

TIA的答案。

java primitive-types
1个回答
0
投票

因为语言规范是这样说的。也许一个令人沮丧的答案–但这是唯一可用的正确答案。是的,这有点奇怪; “赋值运算符(+=, -=, *=等)”包括免费的,不可见的强制转换操作。编写x += y,其中x的类型为int,而y为任何类型的表达式都等效于x += (int) y。我不太确定为什么要按原样编写规范。我所知道的:这永远不会*改变;除非有非常充分的理由,否则Java不习惯进行更改,这些更改会破坏为较早版本的Java编写的代码,除非有充分的理由,而且解决这种怪异之处还不足以保证更改。

注意:是的,x += y的意思是“ x的新值是x的旧值加上y的值”。

*)永远不要说永远,矢田田。让我们说,如果您给我10,000的赔率中有1个赔率,那么我将押注5年之内java中的赔率会有所不同,并打赌这不会改变。

© www.soinside.com 2019 - 2024. All rights reserved.