Java int + =双语法惊喜

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

  • 变化的行为可能会导致精确度损失2个答案
  • 为什么Java在使用“plus equals”运算符时执行从double到integer的隐式类型转换? [重复] 2个答案
  • 为什么Java的+ =, - =,* =,/ =复合赋值操作符需要转换? 11个答案

  • x += 0.5;
    

    相当于:

    x = (int) (x + 0.5)
    

    一般来说:

    x += y等价于x = (type of x) (x + y)


    见15.26.2。 复合分配算子


    x += 0.5;x = (int) (x + 0.5);


    这是因为复合赋值操作符会进行隐式转换 (自动转换):所以

    x+=0.5 => x =(int)(x + 0.5) => x = (int)(7.5) => x = 7
    
    链接地址: http://www.djcxy.com/p/12785.html

    上一篇: Java int += double syntax surprise

    下一篇: Adding int to short