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);