这个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 进行编译。我的问题是:这是错误还是功能?为什么 += 的表现与 + 不同?