Java基础(一) 八大基本数据类型
自从java发布以来,基本数据类型就是java语言的一部分,分别是byte, short, int, long, char, float, double, boolean.
其中:
整型:byte, short, int, long
字符型:char
浮点型:float, double
布尔型:boolean
在详细介绍之前,先科普一下,java中最小的计算单元为字节,1字节=8位(bit)。
一. 整型
java中整型数据属于有符号数,即第一个bit位为0表示正整数,第一个bit位为1表示负整数。在计算机中负数由补码进行表示,那么补码如何计算呢?
补码=源码取反 + 1;
如:
22,在计算机中的表示为00010110,
-22,取反:11101001,加1:11101010
byte
byte属于java中的整型,长度为1字节8bit,取值10000000(-128)到 01111111(127),变量初始化默认值为0,包装类byte
short
short属于java中的整型,长度为2字节16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),变量初始化默认值为0,包装类short
int
int属于java中的整型,长度为4字节32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),变量初始化默认值为0,包装类integer
long
long属于java中的整型,长度为8字节64bit,取值-2^63 (-9,223,372,036,854,775,808)到 2^63-1(9,223,372,036,854,775,8087),变量初始化默认值为0或0l,包装类long
二. 浮点型
java中浮点型数据无法由二进制直接表示,而是一种对于实数的近似数据表示法,它遵循ieee 754标准
float
float属于java中的浮点型,也叫单精度浮点型,长度为4字节32bit,变量初始化默认值0.0f,包装类float
1. float结构
包含三部分:符号位、指数位、尾数位
符号位(s) | 指数位(e) | 尾数位(m) | |
---|---|---|---|
长度 | 1bit | 8bit | 23bit |
说明 | 0表示正数,1表示负数 | 格式为,e值范围:(0,255),指数位取值:(, | 形式为1.m或0.m。其中当e=0时,取1.m,称为正规形式,当e!= 0时,取0.m,称为非正规形式 |
2. float取值
正规形式:
非正规形式:
根据上面公式很容易计算出float的取值范围为:
(最小值,当符号位s取1,指数位e取255)
(最大值,当符号位s取0,指数位e取255)
能取到其间的近似数据。
注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如nan,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用bigdecimal
double
double属于java中的浮点型,也叫双精度浮点型,长度为8字节64bit,变量初始化默认值0.0d,包装类double
1. double结构
包含三部分:符号位、指数位、尾数位
符号位(s) | 指数位(e) | 尾数位(m) | |
---|---|---|---|
长度 | 1bit | 11bit | 52bit |
说明 | 0表示正数,1表示负数 | 格式为,e值范围:(0,2047),指数位取值:(,) | 形式为1.m或0.m。其中当e=0时,取1.m,称为正规形式,当e!= 0时,取0.m,称为非正规形式 |
2. double取值
正规形式:
非正规形式:
根据上面公式很容易计算出double的取值范围为:
(最小值,当符号位s取1,指数位e取2047)
(最大值,当符号位s取0,指数位e取2047)
能取到其间的近似数据。
注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如nan,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用bigdecimal
三. 字符型
char
char属于java中的字符型,占2字节16bit,可以赋值单字符以及整型数值, 变量初始化无默认值,包装类character。
如:
char a = 'a';
char a = '中';
char a = 12; // 取值范围0~65536,因为char类型在ascii字符编码中,有对应的数值,可直接做运算,输出字符表中对应的字符
四. 布尔型
boolean
在jvm中并没有提供boolean专用的字节码指令,而boolean类型数据在经过编译后在jvm中会通过int类型来表示,此时boolean数据4字节32位,而boolean数组将会被编码成java虚拟机的byte数组,此时每个boolean数据1字节占8bit.
--java虚拟机规范
仅有两个值true, false,变量初始化默认值false
上一篇: 巧妙利用引用,将数组转换成树形数组
下一篇: 设计模式-结构型-组合模式