1、数据类型分类
(1)基本数据类型:整数、浮点数、字符、布尔
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128~127 |
短整型 | short | 2个字节 | -32768~32767 |
整型 | int(默认) | 4个字节 | -231~231-1 |
长整型 | long | 8个字节 | -263~263-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0~65535 |
布尔型 | boolean | 1个字节 | true, false |
(2)引用数据类型:类、数组、字符串、接口、Lambda
注意事项:
1)、字符串不是基本类型,而是引用类型;
2)、浮点型可能是一个近似值,并非精确的值;
3)、数据范围与字节数不一定相关;
4)、整数默认类型是int,如果一定要使用long类型,需要加上后缀L;
5)、浮点数默认类型是double,如果一定要使用float类型,需要加上后缀F;
2、数据类型转换
(1)自动转换(隐式):将取值范围小的类型自动提升为取值范围大的类型
int a = 10;
//自动类型转换
float a = 10;
System.out.println(a);//10.0
(2)强制类型转换(显示):
// 格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的类型
int num = (int) 100L;
注意事项:
1)、避免使用强制类型转换,有可能发生精度损失、数据溢出;
2)、byte/short/char这三种类型都可以发生数学运算,如加法"+"。在运算时,这些类型会首先被提升为int类型,然后再计算;
3)、boolean类型不能发生数据类型转换;