5、JAVA数据类型
5.1 基本数据类型
- 数值型
- 整数类型:byte (1),short (2), int (4), long (8) (括号内数字表示字节)
- 浮点类型:float (4),double (8) (浮点数=符号位+指数位+尾数位)
- 字符型 : char (2)
- 布尔型:boolean (1) true,false
5.2 引用数据类型
- 类
- 接口
- 数组
5.3 基本数据类型转换
-
自动类型转换:
char–>int–>long–>float–>double
byte–>short–>int–>long–>float–>double
java进行运算或赋值时,精度小的自动转换为精度最大的数据类型
byte,short和char之间不会相互自动转换,但是三者可以计算,计算时自动转换为int类型
把具体数赋值给byte时,先判断该数是否在byte范围内,如果是就可以
Boolean 不参与运算转换
-
强制类型转换(会造成精度损失)
数据精度从大到小转换时,用强制类型转换
5.4 基本类型和String转换
-
基本数据类型==>String: 在基本数据类型后+“”即可
-
String==>基本数据类型: 基本数据类型对应的包装类的相应方法,得到转换后的基本数据类型
- 有效的字符串才能转换,若字符串s=“abc”,则转换为基本数据类型会抛出异常
补充:
-
byte为基本存储单元,bit为最小存储单元,1 byte = 8 bit
-
声明long 类型要加l或L,如:long a = 0910L;
-
java 浮点型常量(具体值)默认为double,所以如:float b = 3.14;是错误的,即声明float类型要加f或F,如:float b = 3.14f;
-
5.12e2表示5.12乘10的2次方;5.12e-2表示5.12乘10的-2次方
-
对运算结果是小数进行相等判断时要注意使用它们差值的绝对值在某个精度的范围内进行判断
如:double num1 = 2.7; double num2 = 8.1/3; 那么num1==num2为false;需要使用如:Math.abs(num1-num2)<0.0000001来判断相等
-
在java中,char的本质是一个整数,在默认输出时,是Unicode码对应的字符;所以char字符可以参与运算
-
char存储:‘a’>码值97>二进制(110 0001)==>存储
char读取: 二进制(110 0001)>码值97>‘a’==>显示
-
常用编码:
- ASCII:使用1个字节,,可以表示256个字符,ASCII只用了128个字符
- Unicode:能表示所有符号,没有乱码问题,一个英文字母和一个汉字都占用2个字节,即2的16次方=65536个字符,兼容ASCII
- UTF-8:使用大小可变的编码,字母占1字节,汉字占3字节
- gbk: 字母占1字节,汉字占2字节
- 不可以用0和非0 表示boolean,只能用true或false