这是一个强制转型的过程!
i+=5f   因为i是int类型,而5f是float类型,你写的这个表达式其实就是将float类型强制转换成int类型,然后再进行计算的!
你可以把这个表达式该一下数值,你就会看的更明显,例如:i+=5.345f
这样的输出结果仍就是8,因为5.345f强制转型为int的时候,小数点后面的几位是被忽略的!
你可以自己试试!

解决方案 »

  1.   

    同意 congbailing_914(奇迹玩家) 的说法!!!!!!!!!
      

  2.   

    (1)int i=3; i=5f;(2)
    int i=3;
      i+=5f;
    System.out.println(i);
    为什么第二正确,第一个有错  。刚才发错了
    谢谢大家~~~~~~    关键是为什么第二个能强制转换,第一个就不可以呢

      

  3.   

    第二个int i = 3;
    i += 5f;相当于:int i = 3;
    i = i + (int)5f;
      

  4.   

    我认为这其实就是一个运算和赋值的区别问题.因为int和float进行运算是可以的, 是先执行一个narrow cast(窄转化),即将float转化成int再运算,得到结果仍然是int,所以可以赋给i。而赋值运算中,不会自动执行narrow cast,你要将一个float赋给int型变量必须显示转化。
      

  5.   

    第一个肯定是错的啦  int i=3,i=5f 没有类型转换阿  int i=3,i=int(5f);这样就没有错了
    第二个 就是 Dan1980(String someGoodAdvise)说的那样啦