assignment-operator - Java long型変換 - Javaの+=,-=,*=,/=複合代入演算子はなぜキャストを必要としないのですか?

Java 型変換 String / java / casting / operators / variable-assignment

今日までは、例えばこんな風に思っていました。

i += j;

の近道だった。

i = i + j;

でも、これをやってみると

int i = 5;
long j = 8;

GMachado



Answer #1

i = i + l 場合、 long から intexplicitly にキャストする必要があります。そうすると、コンパイルされて正しい出力が得られます。お気に入り

i = i + l 場合、 long から intexplicitly にキャストする必要があります。そうすると、コンパイルされて正しい出力が得られます。お気に入り

i = i + (int)l;
i = (int)((long)i + l); // this is what happens in case of += , dont need (long) casting since upper casting is done implicitly.