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(计算机编程语言)
参考技术A1、在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字符型
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
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);
·
调用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 详细介绍short,byte,char三种类型,我分不清