【问题标题】:Difference between variable += value and variable = variable+value;变量+=值和变量=变量+值的区别;
【发布时间】:2013-02-13 00:06:39
【问题描述】:

例如:

int a = 10;
a += 1.5;

这运行得很完美,但是

a = a+1.5;

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

【问题讨论】:

标签: java operators


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    来自Java Language Specification section 15.26.2

    E1 op= E2 形式的复合赋值表达式等价于E1 = (T) ((E1) op (E2)),其中TE1 的类型,但E1 只计算一次。

    所以最重要的区别(就为什么第二个版本无法编译而言)是隐式转换回原始变量的类型。

    【讨论】:

      【解决方案3】:

      万一

      a += 1.5;
      

      隐式自动装箱完成

      这里是哪里

      a = a+1.5;
      

      您正在将一个 int 变量显式添加到 float/double 变量中

      所以改正它

      a = a+(int)1.5;
      

      a = (int) (a+1.5);
      

      【讨论】:

        【解决方案4】:

        查看此链接

        int a = 10;
        a += 1.5;
        

        将被视为

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

        您可以在此链接中找到expressions

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-21
          • 2015-07-22
          相关资源
          最近更新 更多