Java 变量之间的差异+;=值和变量=变量+;价值

Java 变量之间的差异+;=值和变量=变量+;价值,java,operators,Java,Operators,例如: int a = 10; a += 1.5; 这个运行得很好,但是 a = a+1.5; 此赋值表示类型不匹配:无法从double转换为int。 所以我的问题是:+=operator和=operator之间有什么区别。为什么第一个任务没有说什么,但是第二个任务会说。请给我解释一下。我只是想知道我是否能把第一份作业用到所有地方 int a = 10; a += 1.5; 相当于: int a = 10; a = (int) (a + 1.5); 一般而言: x+=y相当于x=(x的

例如:

int a = 10;
a += 1.5;
这个运行得很好,但是

a = a+1.5;
此赋值表示
类型不匹配:无法从double转换为int
。 所以我的问题是:
+=operator
=operator
之间有什么区别。为什么第一个任务没有说什么,但是第二个任务会说。请给我解释一下。我只是想知道我是否能把第一份作业用到所有地方

int a = 10;
a += 1.5;
相当于:

int a = 10;
a = (int) (a + 1.5);

一般而言:

x+=y
相当于
x=(x的类型)(x+y)


请参见以下内容中的

形式为
E1 op=E2
的复合赋值表达式等价于
E1=(T)((E1)op(E2))
,其中
T
E1
的类型,除了
E1
仅计算一次之外

因此,最重要的区别(就第二个版本不编译的原因而言)是隐式转换回原始变量的类型

a += 1.5;
隐式自动装箱已完成

哪里和这里一样

a = a+1.5;
您正在向浮点/双精度变量显式添加int变量

所以要纠正它

a = a+(int)1.5;

检查此链接

int a = 10;
a += 1.5;
将被视为

int a=10;
a=(int)(a+1.5);

正如你在这个链接中所看到的,这个问题已经讨论过很多次了。了解如何使用searchDuplicate:
int a=10;
a=(int)(a+1.5);