この Java コード
public class test{
public static void main(String[] args){
byte[] a = new byte[1];
a[0] = 1;
byte x = 1;
x = x + a[0];
System.out.println(x);
}
}
次のコンパイル エラーをスローします。
test.java:10: possible loss of precision
found : int
required: byte
byte y = x + a[0];
^
1 error
は?ここで何が起こっているのですか?すべての変数はバイトとして宣言されます。1 をバイトに明示的にキャストしても違いはありません。ただし、に変更
public class test{
public static void main(String[] args){
byte[] a = new byte[1];
a[0] = 1;
byte x = 1;
x += a[0];
System.out.println(x);
}
}
すべてが正常にコンパイルされます。Java バージョン 1.6.0_16、build-b01 でコンパイルしています。私の質問は次のとおりです。これはバグですか、それとも機能ですか? += のパフォーマンスが + と異なるのはなぜですか?