Java-数据类型
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。
(3)基本数据类型
A: 整数 占用字节数
byte 1
short 2
int 4
long 8
B: 浮点数
float 4
double 8
C: 字符
char 2
D: 布尔
boolean 1
注意:
Java整数默认是int类型,浮点数默认是double。
所以这样写 float i = 4.0则会报错,正确的写法:float i = 4.0f或者float i = (float)4.0
double与float的区别
我们要认识他们的区别就应该先认识浮点数(小数)在 计算机底层是怎么样存储的
一个小数在计算机的存储是这样的,首先我们把一个小数转换为二进制表示,然后用科学计数法表示这个数
例如78.375用二进制的科学计数法表示如下:1.001110011 x 2^6
计算机中,保存这个数使用的是浮点表示法,分为三大部分(如下图所示,图片来自维基百科):
第一部分用来存储符号位(sign),用来区分正负,这里是 0,表示正数,1则表示为负数
第二部分用来存储指数(exponent),这里的指数是十进制的 6
第三部分用来存储小数(fraction),这里的小数部分是 001110011

在Java中float占用字节数为4个字节,那么就是占用了32位,Java单精度浮点表示法:
符号位(sign)占用1位,用来表示正负数。
指数位(exponent)占用 8 位,用来表示指数。
小数位(fraction)占用 23 位,用来表示小数,不足位数补 0。
而 double 占用字节数为8个字节,那么就是占用了 64 位,Java双精度浮点表示法:
符号位占用 1 位,指数位占用 11 位,小数位占用 52 位
我们很容易就可以知道一个数的大小取决于它的指数大小,一个数表示的精确度取决于它的小数能够表达的位数
我们知道float的指数位8,小数位为23,而double的指数位为11位,小数位为52位。所以我们可以得出的结论就是
double比float能表示的数更大更加精确
Java中数据类型的转换
(1)boolean类型不参与转换
(2)默认转换
A:从小到大(比如int i = 1;long x = i;)
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小(比如long = 1;int x = i;)
B:这样在不知道数据的大小的时候可能会有数据精度的损失,一般不建议这样使用。
浙公网安备 33010602011771号