java中的byte有什么作用?

2024-11-17 09:58:09
推荐回答(3个)
回答1:

  byte即字节的意思,是java中的基本类型,用心申明字节型的变量。

  通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容,在下载文件时,也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件写入还是读取都要用到。

回答2:

在今天,byte字节就是一个八位元组,使用其它位数的机器都进了博物馆。 java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。不幸的是,byte的用作计数的时间远少于用表达基本内存单元的时间。比如从stream里读入一个双字节字符,我们先收到2个byte。为了把byte转换成适当的形式,需要对byte值做一些比较,比如判断字符集要比较其是否在某个编码范围内,比如GBK 0x8140~0xFEFE,然后new适当的string。 signed byte 把 0x00 ~ 0xff 映射成 0~127 -128~-1 两段,注意当与literal比较时,java自动将literal识别成int 可以用 下面的小程序来验证: 1 public class JavaByte 2 { 3 public static void main(String[] args) 4 { 5 byte b = 0; 6 for ( int i = 0; i <= 0xff; ++i ) 7 { 8 b = (byte)i; 9 System.out.print(" "+i+":"+b+", "); 10 } 11 } 12 } 当收到(0xC7B0)这个GBK字符时,要判断 0x81 <= 0xC7 <= 0xFE 是否成立,实际变成判断 -127 < -57 < -2,唔,万幸,可以直接比较 low < ch < high。如果要判断 0x00 <= 0xC7 <= 0x80 (ASC Char),这回麻烦了,变成判断 (0 <= -57 <= 127) || ( 0x57 == -128 )。比较简单的办法用 (b+256)%256的办法令其值回到0~255,或者用&0xff并赋给一个int。考虑到jvm里的byte其实也是32位的,所以在计划用byte的地方,直接用integer并不会有什么实际的损失,而 DataInputStream也提供了一个readUnsignedByte()方法返回的是int。所以真正的解决方案是忘掉byte,直接上 int。至于为什么java没有unsigned数据类型,照下面这个interview里Jams Golsing的意思,应该是java应该简单而unsigned算术过于复杂了会让大多数程序员产生误解误用:

回答3:

  1. byte在java中是一种是数据类型,代表一个字节,一个字节包含8个位,所以,byte类型的取值范围为-128到127。

  2. 在某些程序中(尤其是和硬件有关的程序)会将某些数据存储到字节类型的变量中,比如00110010,其中每个位都代表一个参数,然后以位运算的方式对参数进行取值和赋值操作。