implicit conversion in java operator +=

前端 未结 2 984
后悔当初
后悔当初 2020-12-06 06:21

I\'ve found that java compile has a non-expected behavior regarding assignment and self assignment statements using an int and a float.

The following code block illu

相关标签:
2条回答
  • 2020-12-06 06:59

    i believe that the explicit i+f fails because of Narrowing primitive conversion. While in the first case the conversion on the right side passes because it is done according to Compound Assignment rules.

    0 讨论(0)
  • 2020-12-06 07:05

    http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.26.2

    The Java Language Specification says:

    A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.

    So i += f is equivalent to i = (int) (i + f).

    0 讨论(0)
提交回复
热议问题