java中的数据类型字节不允许添加任何文字

时间:2012-04-25 07:30:34

标签: java

我正在尝试像这样的一些java代码

class Test {
public static void main (String [] args){
    byte b = 10;
    b = b + 10;
}

}

保存后,当我尝试编译它时,它给了我一个错误

D:\java\Test.java:4: possible loss of precision

发现:int 必需:字节         b = b + 10;                       ^ 1错误

但是如果尝试这样的话就没有了

b++;
b+=10;

完全没问题 这是什么原因?

2 个答案:

答案 0 :(得分:2)

您必须将原始代码编写为

b = (byte)(b + 10);

问题是b + 10的类型是int,因为字节被扩展为int。

这样做的原因是存在概念模糊性,如果b是120,那么b + 10等于130,还是等于-126?

Java设计者决定在这种情况下应该在int中执行添加,因此120 + 10是130.然后它不能存储到一个字节中。

对于b+=10,很明显你想修改b,所以它是一个字节加法。

答案 1 :(得分:1)

好吧它说possible loss of precision因为编译器认为可能在向b添加10之后可能会超过byte大小,但是当你使用时b++b+=10不是只是添加10而是typcasting它会自动添加,以便在编译器级别确认{{1}的值}}不超出b大小的限制。