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?
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.
- href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.26.2"
rel="noreferrer">JLS
§15.26.2
No comments:
Post a Comment