java——Byte类/包装类的使用说明
Byte类/包装类
包装类是一个常量类,可实例化(意义:帮助对应的数据类型进行数据类型)
java数据类型包括内置数据类型和引用数据类型
内置数据类型:含6中数字类型(四个整数型,两个浮点型),一种字符类型,还有布尔类型
byte
byte:数据类型占用1个字节=8bit,以二进制补码表示的整数
取值范围:默认值为0,最小值为-128(-2^7);最大值是127(2^7-1)
用途:byte类型用在大型数组中节约空间,主要代替整数,因byte变量占用内存的空间只有int类型的1/4;不足是这个数取值范围大,byte不能全部替代
常用方法
A.构造方法
publicByte(bytevalue) publicByte(Strings)
B.普通方法+类方法(对数据类型做转换)
piublicbytebyteValue() publicshortshortValue() publicintintVlaue() publiclonglongValue() publicfloatfloatValue() publicdoubledoubleValue() publicStringtoString() publicstaticStringtoString(byteb)
包装类和基本数据类型的对象关系
注:常量类是否可以被实例化主要看构造方法
packagecom.youceedu.test.wrapper; publicclassTestByte{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub bytea=9; byteb=-7; Stringresult=Byte.toString(a); Bytec=newByte((byte)9); System.out.println(c.floatValue()); System.out.println(result+b); } }
补充:java的byte数据类型总结||二进制的原码、反码和补码
二进制的原码、反码和补码
原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
正数
首位表示符号位,原码、反码和补码都是本身。
负数
如何计算负数在计算机中的二进制(即它的补码)?
首先对负数的绝对值取反,然后+1得到负数的补码。
例如:bytea=-5
-5的绝对值=55的二进制表示是00000101取反得到11111010+1运算得到11111011,那么11111011就是-5的补码。
也可以这样,用原码计算
例如:bytea=-5原码表示10000101
计算其反码为11111010
计算其补码为11111011
所以-5在计算机中表示为11111011
byte
byte的取值范围为什么是-128~127
byte表示一个字节,8bit,其中最高位是符号位。因此,最大值为01111111,即127;最小值是负数为10000000(规定)【其他数据类型的最大最小值也可以这样以此类推】。在计算机中二进制都是以补码的形式表示的,我们也可以这样来理解,为什么最小是-128
最小负数补码表示为:10000000
由补码计算原码:
10000000作-1运算得到01111111,取反10000000因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128
byte与ASCII
标准ASCII码也叫基础ASCII码,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
ASCII码表示的范围是0~127刚好byte类型可以覆盖到。因此byte类型和ASCII可以互相转换。可以根据ASCII对照表进行查看http://tool.oschina.net/commons?type=4
当byte类型的变量的值实时是在''单引号里面的时候,该byte变量的值表示的是ASCII码,可以通过ASCII对照表查看其真实的数值。
比如:
publicclassByteTest{ publicstaticvoidmain(Stringargs[]){ bytea='a'; byteb='B'; bytec='4'; System.out.println("a="+a); System.out.println("b="+b); System.out.println("c="+c); } }
输出:
a=97 b=66 c=52
byte&0xff的作用
byte->int因为byte是8位,而int是32位,当byte类型转换为int类型的时候,会自动用符号位补足高位。例如-511111011转为int类型会表示为11111111111111111111111111111011其表示的十进制的数值不变。
有的时候,我们只想保留二进制的补码形式,我们可以用byte&0xff。0xff是十六进制,默认是int类型,其二进制表示为00000000000000000000000011111111将byte类型的数值跟0xff作&操作,可以将高24位变为0,保留低8位。当然对应的十进制数也发生了变化。(相当于将byte变成无符号int类型)
例如:bytea=-5((int)-5)&0xff
11111111111111111111111111111011 & 00000000000000000000000011111111 =00000000000000000000000011111011
int强转换为byte
例如:
inta=234byteb=(byte)a-->得到b=-22因为234已经超出了byte类型的表示范围,强转会直接丢弃高位,保留低8位。
int类型的234的二进制表示为:11101010【高24位全是0】强转为byte类型,舍弃高24位得到11101010,第一位为符号位1,得到一个负数-22。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。