例如:
int a = 10;
a += 1.5;
这完美运行,但
a = a+1.5;
此作业说Type mismatch: cannot convert from double to int
。
所以我的问题是:+= operator
和= operator
之间有什么区别。为什么第一个任务没有说什么,但第二个意愿。请向我解释。我想知道我是否可以将第一个作业用于所有地方。
答案 0 :(得分:9)
int a = 10;
a += 1.5;
相当于:
int a = 10;
a = (int) (a + 1.5);
一般来说:
x += y;
相当于x = (type of x) (x + y);
答案 1 :(得分:9)
来自Java Language Specification section 15.26.2:
E1 op= E2
形式的复合赋值表达式等同于E1 = (T) ((E1) op (E2))
,其中T
是E1
的类型,但E1
仅被评估一次。
因此,最重要的区别(就第二个版本不编译的原因而言)是隐式转换回原始变量的类型。
答案 2 :(得分:2)
答案 3 :(得分:1)
如果是
a += 1.5;
隐式自动装箱完成
这里的地方
a = a+1.5;
你明确地将一个int变量添加到float / double变量
所以要纠正它
a = a+(int)1.5;
或
a = (int) (a+1.5);