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