+ = b是否真的等于a = a + b?

这个问题在这里已经有了答案:

  • 为什么Java的+ =, - =,* =,/ =复合赋值操作符需要转换? 11个答案

  • 根据Java语言规范第15.26.2节,复合赋值运算符向左侧操作数的类型插入一个隐式转换:

    二元运算的结果被转换为左变量的类型,并经过值集转换(第5.1.13节)到适当的标准值集(不是扩展指数值集),转换结果是存储到变量中。

    赋值a = a + b将要求演员表是等同的:

    a = (int)(a + b);
    

    你有一个double和int值:

    a += b is equivalent to a = (int)(a + b);
    a = a + b is equivalent to a = a + b;
    

    在后者中,您无法编译,因为您正在尝试在不投射的情况下将double添加到int。 a + = b为你演员阵容。

    链接地址: http://www.djcxy.com/p/12795.html

    上一篇: Is a += b really equivalent to a = a + b?

    下一篇: Why b=b+1 when b is a byte won't compile but b+=1 compiles