JAVA中byte类型的介绍。 谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(计算机编程语言)

参考技术A

1、在Java中,byte类型的数据是8位带符号的二进制数。最高位表示正负,0为正,1为负。

2、java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。

3、正数的最高位都是 0 ,正数的值就是二进制表示的值。 

4、负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到的值。

扩展资料

1、java基本数据类型

JAVA中一共有八种基本数据类型,分别是byte、short、int、long、float、double、char、boolean。

2、java各数据类型取值范围

byte,整型,1个字节,范围:-2的7次方 ~ 2的7次方-1;

short,整型,2个字节,范围:-2的15次方 ~ 2的15次方-1;

int,整型,4个字节,范围:-2的31次方 ~ 2的31次方-1;

long,整型,8个字节,范围:-2的63次方 ~ 2的63次方-1;

float,浮点型,4个字节,范围:3.402823e+38 ~ 1.401298e-45;

double,浮点型,8个字节,范围:1.797693e+308~ 4.9000000e-324;

char,文本型,2个字节,范围:0~2的16次方-1;

boolean,布尔型,1个字节,范围:true/false;

参考资料

百度百科-java字符型

参考技术B

byte是java的基本数据类型,Java中byte是做为最小的数字来处理的,它的值域被定义为-128~127,也就是signed byte。

1、byte 数据类型是8位、有符号的,以二进制补码表示的整数;

2、最小值是 -128(-2^7);

3、最大值是 127(2^7-1);

4、默认值是 0;

5、byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

6、例子:byte a = 100,byte b = -50。

扩展资料

byte的常量包装类实例代码演示:

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
      

System.out.println("包装类:java.lang.Byte");  
      

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
     

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

输出结果为:

基本类型:byte 二进制位数:8

包装类:java.lang.Byte

最小值:Byte.MIN_VALUE=-128

最大值:Byte.MAX_VALUE=127

参考技术C 在今天,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算术过于复杂了会让大多数程序员产生误解误用:

http://www.gotw.ca/publications/c_family_interview.htm

这着实是个问题,而且n年前就被人关注了,

http://www.darksleep.com/player/JavaAndUnsignedTypes.html本回答被提问者采纳

java中String类型的如何转为byte[]

如题,谢谢

一、String转byte数组简单版:

1、String str = "abcd";

2、byte[] bs = str.getBytes();

二、复杂版

// pros - no need to handle UnsupportedEncodingException // pros - bytes in specified

encoding scheme byte[] utf8 = "abcdefgh".getBytes(StandardCharsets.UTF_8); 

System.out.println("length of byte array in UTF-8 : " + utf8.length);

System.out.println("contents of byte array in UTF-8: " + Arrays.toString(utf8)); 

Output : length of byte array in UTF-8 : 8 contents of byte array in UTF-8: [97, 98, 99, 100, 101, 102, 103, 104]1

扩展资料:

反过来,将Byte数组转化为String的方法

using System; 

using System.Text; 

public static string FromASCIIByteArray(byte[] characters) 

 

ASCIIEncoding encoding = new ASCIIEncoding( ); 

string constructedString = encoding.GetString(characters); 

return (constructedString); 

 


·

参考技术A

调用String类的getBytes()方法:

public static byte[] strToByteArray(String str)    

if (str == null)       

return null;
   

  

byte[] byteArray = str.getBytes();    

return byteArray;

扩展资料:

getBytes() 是Java编程语言中将一个字符串转化为一个字节数组byte[]的方法。String的getBytes()方法是得到一个系统默认的编码格式的字节数组。

存储字符数据时(字符串就是字符数据),会先进行查表,然后将查询的结果写入设备,读取时也是先查表,把查到的内容打印到显示设备上,getBytes()是使用默认的字符集进行转换,getBytes(“utf-8”)是使用UTF-8编码表进行转换。

getBytes() 方法有两种形式:

getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

参考资料:getBytes()-百度百科

参考技术B 你是说有数字字符组成的字符串变成自己型数组是吗?
比如 "123456" > byte[]=1,2,3,4,5,6
参考技术C 这种问题就属于知道了就及其简单,不知道就够你忙活半天的那种。其实只要一个语句就OK了:

byte[] byteArray = System.Text.Encoding.Default.GetBytes( str );
怎么样,够简单吧?
参考技术D 楼上的确定使用的是java?

String s = "fs123fdsa";//String变量

byte b[] = s.getBytes();//String转换为byte[]

String t = new String(b);//bytep[]转换为String本回答被提问者采纳

以上是关于JAVA中byte类型的介绍。 谢谢的主要内容,如果未能解决你的问题,请参考以下文章

java中String类型的如何转为byte[]

java 详细介绍short,byte,char三种类型,我分不清

详解java中的byte类型

请问java中的基本数据类型中的字节型( byte ) 是啥概念,请列举几个byte型的常量,谢!

Java不提供无符号整数类型?谢谢

基本类型介绍