byte 类型的小问题就是搞不明白

来源:百度知道 编辑:UC知道 时间:2024/07/08 14:08:22
byte[] a = "0".getBytes();
byte b = a[0];
System.out.println("b = " + b); //输出48

byte c = 0;
System.out.println("c = " + c); //输出0

如上面 a 里面就一个值,其实也就是一个 byte 类型的值,而下面的 c 也是一个 byte 类型的值,怎么它就一个转换成ASCII码一个不转呢?byte 和 int 除了表示数值的范围不同以外,还有什么不同码 ?

"0".getBytes(),这里0是个String类型,对其getBytes()返回的是字符串0的字节数组48,所以a为48;而c为byte类型,其值就为0,所以就有此输出。
int占4个字节,byte是1个字节,字节也是JAVA中的数据类型中的最小单位,每个字节8位。所以2进制的话,int最多可以表示正负一共2的32次方个数,byte则是2的8次方。
Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果。因此,如果把两个byte类型值相加,最后会得到一个int类型的结果。如果需要得到byte类型结果,必须将这个int类型的结果显式转换为byte类型。

BYTE类型是字节型,INT是短整型

BYTE存放的应该是1-255,换成二进制是00000001-11111111