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

时间:2013-02-27 08:53:10

标签: java operators

例如:

int a = 10;
a += 1.5;

这完美运行,但

a = a+1.5;

此作业说Type mismatch: cannot convert from double to int。 所以我的问题是:+= operator= operator之间有什么区别。为什么第一个任务没有说什么,但第二个意愿。请向我解释。我想知道我是否可以将第一个作业用于所有地方。

4 个答案:

答案 0 :(得分:9)

int a = 10;
a += 1.5;

相当于:

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

一般来说:

x += y;相当于x = (type of x) (x + y);


请参阅15.26.2. Compound Assignment Operators

答案 1 :(得分:9)

来自Java Language Specification section 15.26.2

  

E1 op= E2形式的复合赋值表达式等同于E1 = (T) ((E1) op (E2)),其中TE1的类型,但E1仅被评估一次。

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

答案 2 :(得分:2)

检查此链接

int a = 10;
a += 1.5;

将被视为

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

您可以在此链接中找到expressions

答案 3 :(得分:1)

如果是

a += 1.5;

隐式自动装箱完成

这里的地方

a = a+1.5;

你明确地将一个int变量添加到float / double变量

所以要纠正它

a = a+(int)1.5;

a = (int) (a+1.5);
相关问题