8种基本数据类型
一、整型
提示:1个字节=8个二进制数空间,8个二进制数的首位(符号位)是判断是否为正数,0为正数,1为负数,其他七位数是存储。
- byte类型占1个字节,它的存储范围为 -2^8-1到正的
(2^8-1)-1,也就是-128到127的范围,Java编程中默认值为0。 - short类型占2个字节,和上面一样的计算方法,取值范围为
-2^15
到正的( 2^15)-1。计算公式为 -2 n-1次方 到2 n-1次方-1,Java编程中默认值为0。 - int类型占4个字节,取值范围为-2^31
到2^31-1 ,Java编程中默认值为0。 - long类型占8个字节,取值范围为-2^63
到2^63-1 ,Java编程中默认值为0。
二、浮点型
1.float类型占4个字节,Java编程中最多显示7位小数,Java编程中默认值为0.0。
2.double类型占8个字节,Java编程中最多显示15位小数,Java编程中默认值为0.0。
注意:后面的小数不显示不是四舍五入。
三、字符型
char类型占2个字节。Java编程中默认值为null(空的对象,不是没有)。
四、布尔类型
boolean类型占 1字节或4字节(java规范2.0说明)。 不是1字节 或 4字节(1bit),Java编程中默认值为false。
注意:
如果使用boolean声明一个基本类型的变量时,那么该变量占4个字节。boolean f =false;
如果使用boolean声明一个数组类型的时候,那么该每个数组的元素占1个字节。
Boolean [] arr = {false,true,true};
五、基本类型转换
1.自动类型转换
(1)类型取值范围小的数据自动转化为类型取值范围大的
整型:byte可以转化为short、int、long、float、double类型的数据,
short可以转化为int、long、float、double类型的数据,
int可以转化为long、float、double、char类型的数据,类型的数据
例如:byte num1 =12;
int sum =num1+12;{这时的 sum=num1(byte类型)+12(int类型),byte类型+int类型=int类型}
例2:int转char
char sum=(char)num;(char)表示强转为char类型。
运行结果:
浮点型:float可以转化为double类型
char类型可以转化为int类型;
运行结果:
类型转换路线:byte->short->int->long->float->double
char->int;int->char;
boolean类型不能转化。
2.强制转化
取值范围大的类型数据需要强转为取值范围小的类型,取值范围大的类型的数据如果在取值范围小的类型的范围内,可以转化,超出范围后,会数据溢出或者精度下降。
(大类型数据转小类型数据必须强转)
例如:
byte取值范围为-128到127
运行结果为:
六、拓展
例1:
以上两种情况,语法没有问题,属于编译器自身的问题。原因:
Java编程中整数类型默认是int类型,浮点类型默认是double类。
当byte类型数据+byte类型数据时,由于byte类型取值范围小,所以有可能超过byte类型,造成数据溢出,所以编译器设置为报错。short类型也是一样。