一、整型 提示: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.float类型占4个字节,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类型也是一样。