
正文
java代码中byte java代码中换行符
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中的byte有什么作用
在今天,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算术过于复杂了会让大多数程序员产生误解误用:
相关问答
Q1: JAVA中byte类型的介绍。 谢谢
Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。
byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。
在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。
运算规则:
####正数的最高位都是 0 ,正数的值就是二进制表示的值。 ####
####负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。 ####
用8位的二进制来说明此规则:
比如:00000001。最高位是0 为正数 ,那么表示的就是 十进制的 1。
再比如:10000001.最高位是1 为负数,值是多少?取反得到 01111110 加1 得到 01111111 ,那么值为 -127
理解此运算规则我们正式开始说byte,byte正好是8位的二进制数。short是16位 int是32位 long是64位。
上述代码,最后会输出-56。原因如下:
200的二进制表示是111001000,由于int是32位的二进制,所以在计算机中,实际上是00000000000??111001000,当int转成byte的时候,那么计算机会只保留最后8位,即11001000。
然后11001000的最高位是1,那么表示是一个负数,而负数在计算机中都是以补码的形式保存的,所以我们计算11001000的原码为00111000,即56,所以11001000表示的是-56,所以最后test的值为-56。
扩展资料
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。
在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。
因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
参考资料来源:百度百科—Java(计算机编程语言)
Q2: Java中一个byte是多少个位元组,如果byte阵列的长度是1024,是1mb的大小吗?
Java中一个byte是多少个位元组,如果byte阵列的长度是1024,是1mb的大小吗?
1byte 就是1个位元组
1byte = 8bit
1KB = 1024 byte
1MB = 1024 KB
所以如果byte阵列的长度是1024,应该是1KB的大小
BYTE* buffer [1024] 是什么意思? 是单纯的开辟一个buffer阵列,阵列的大小为1024,资料型别为一个位元组吗
BYTE* buffer [1024] 只开辟了1个指标,32bit系统占用4个位元组的记忆体。
这1个指标buffer指向了型别是BYTE [1024]的地址。
就是说buffer 可以被用来操作 以每1K为单位的多个数据块。
如何把一个byte阵列的前1024个位元组,复制到另一个数组中
用System.arrayCopy即可拷贝byte阵列的前1024位元组到新阵列;
至于第二问,你只访问byte阵列的0..1023元素不就行
位元组型Byte的长度是0~256( ),对吗?
不对。
一般来说Byte占用8个bit最大就是八个1,得出来的是0-255而不是0-256.而且这还只是用原始码标示的范围,补码,反码各不相同。
java中 byte[] b = new byte[1024];是指b中可以存1024个位元组吗?
byte[] b = new byte[1024]
这句话的意思就是说你先定义了一个byte型别的阵列,阵列长度为1024。也就是说你最多可以存1024个位元组的东西,如果超过这个值就会报溢位的异常了
位元组阵列byte的长度有限制吗
使用eclipse预设的vm arguments,执行以下程式码:
public static void main(String[] args) {
byte[] array=new byte[61858764];
short[] shortArray=new short[30929382];
int[] intArray=new int[15464691];
long[] longArray=new long[7732345];
24c512一次最大写入的长度是多少个位元组
此晶片的一页(page)为8位元组,就是启动一次写操作后,可以连续写8个位元组,如果你一次性写10个,每个都重新启动写操作当然没问题。
1Mb是多少个字?
1个汉字等于两个位元组
1MB=1024KB
1KB=1024Byte
Byte就是B也就是位元组
所以1MB=1024KB=1024*1024B=1024*1024/2个汉字=524288个汉字
char x=,该阵列的长度是多少
这显然不是一个数组
只是一个字元变数,这个变数所占的记忆体是1个位元组。
Q3: 在java中以下代码哪行会报错bytea
float型变量。在java中,报错bytea是不常见的一种,他的报错是因为float型变量的f乜有区分大小写,因此就会报错。Java语言其实就是一种给计算机使用的编程语言,我们需要让计算机帮助我们处理一些问题,但是直接说人类语言计算机无法识别,就只能通过计算机语言实现。
Q4: java的byte和byte的区别
在java中有基本类型和复杂类型之分,
byte是基本类型,是编译器可以直接识别java代码中byte的,属于java语法方面的
而byte是一个java包中的一个类,编译器不认识byte
java代码中byte他看到的是一个用户自己定义的class;巧就巧在
java包中的byte类完成的功能类似与编译器提供的byte基本类型
关于byte的更过详情请查看java
api文档
java代码中byte的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java代码中换行符、java代码中byte的信息别忘了在本站进行查找喔。








