A colleague of mine asked this question to me and I am kind of
confused.
int i =
123456;
short x =
12;
The
statement
x +=
i;
Compiles fine
however
x = x +
i;
doesn't
What
is Java doing here?
class="normal">Answer
int i = 123456;
short
x = 12;
x +=
i;
is
actually
int i =
123456;
short x = 12;
x = (short)(x +
i);
Whereas
x = x + i
is simply x = x + i
. It does
not automatically cast as a short
and hence causes the error
(x + i
is of type
int
).
/>
A compound assignment
expression of the formE1 op= E2
is equivalent to
E1 = (T)((E1) op (E2))
, whereT
is the
type ofE1
, except thatE1
is
evaluated only once.
No comments:
Post a Comment