在下面的代码片段中,编译器将无法编译

时间:2014-02-16 16:39:31

标签: java operators

代码无法编译

byte a = 127;
byte b = 1;
byte c;
c = (a + b); //eror
System.out.println("The value of c=" + c);

编译器不会编译代码。

1 个答案:

答案 0 :(得分:1)

Java默认将数字类型存储为int。尝试:

c = (byte)(a+b);

发生错误是因为整数(4个字节)不能包含在单个字节中而不会丢失信息,这就是编译器请求您明确进行此转换的原因。


此外,FYI - 单个短和字节声明实际上作为单个字存储在内存中(即4个字节),因此在限制数字大小时不会保存内存。数组不是这种情况,byteshort数组中的每个插槽实际上分别有1或2个字节。