itemprop="text">
Until today, I thought that for
            example:
i +=
            j;
Was just
            a shortcut for:
i = i +
            j;
But if we try
            this:
int i = 5;
long j
            = 8;
Then
            i = i + j; will not compile but i +=
            j; will compile fine.
Does it mean
            that in fact i += j; is a shortcut for something like
            this
i = (type of i) (i + j)?
              As always with these questions, the JLS holds
            the answer. In this case             href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">§15.26.2
            Compound Assignment Operators. An
            extract:
 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.
An
            example cited from             href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">§15.26.2
            [...] the following code is
            correct:
short x = 3;
x
            += 4.6;
 
            and results in x having the value 7 because it is equivalent
            to:
short x = 3;
x =
            (short)(x +
            4.6);
In
            other words, your assumption is correct.
  
No comments:
Post a Comment