Java数据类型
数据类型分类
数据类型分类:
-
基本数据类型
- 整数类型
- 小数类型
- 字符型
- 布尔型
-
引用类型
- String类型
- 数组类型
基本数据类型
byte:字节
bit:比特(二进制位数)
1 byte = 8 bit(1 B = 8 b)意义:一个字节占用8个二进制数
整数类型:
类型名 占用字节 取值范围 int(整型) 4 大约±21亿;-231~231 short(短整型) 2 -32000~32000;-215-215-1 long(长整型) 8 -263-263-1;不是无穷大 byte(字节) 1 -128-127; -27-27-1
小数类型:
类型名 占用字节 小数位数 float(浮点型) 4 7 double(双精度型) 8 16
字符型:
类型名 | 占用字节 | 范围 |
---|---|---|
char(字符型) | 2 | Unicode编码0~65535 |
基本数据类型转换
数据类型转换是在赋值运算或者算数运算的时候,数据类型要要求一致,需要进行类型的转换,类型转换包括自动转换和强制转换,转换的条件是根据字节的长度来决定的。
自动转换
自动转换的前提条件是转换后的数据类型比转换钱的数据类型字节长,不同数据类型之间的转换,可能出现失真问题。
// 定义基础类型 int num = 250; short sNum = 25; long lNum = 2500; // 定义超出范围报错 // byte bNum = 250; byte bNum = 25; // 定义float类型必须要加f/F float fNUm = 250.250f; // 小数类型默认是double double dNum = 250.250; // 自动转换 int newNum = num + bNum; // 输出:275 System.out.println(newNum); // 不同类型转换 float fNewNum = fNUm + num; // 输出500.25 结果正确 System.out.println(fNewNum); // 输出4.1400000000000001 // 输出的结果有点小错误,这种现象为数据失真 System.out.println(3.14+1);
强制转换
强制转换的情况是转换前的数据所占字节比结果多,强制转换得到的结果可能正确,也可能出现错误。
// 强制转换 int lNewNum = (int) lNum + num; // 输出:2750,强制转换需要在类型前加(数据类型) System.out.println(lNewNum); // 输出:19,正确计算应该输出275,强制转换可能出现问题 byte bNewNum = (byte) ((byte)num + bNum); System.out.println(bNewNum);