基本数据类型声明
// 默认为int类型,这里存在自动类型提升
byte b = 6;
short s = 6;
char c = 6;
// 默认为int类型
int i = 6;
// 这里后面加 l 或者 L,表示是long类型;不加表示int
long l = 6L;
// 后面为 f 或者 F,表示为float类型;不加表示double类型
float f= 6.0f;
// 默认为double,后面的 d 可以不要
double d = 6.0d;
基本数据类型转换规则如下:
自动转换和强制转换
数值类型在内存中直接存储其本身的值,对于不同的数值类型,内存中会分配相应的大小去存储。如:byte类型的变量占用8位,int类型变量占用32位等。相应的,不同的数值类型会有与其存储空间相匹配的取值范围。具体如下所示:
自动类型转换
- 自动类型转换又称隐士类型转换,向上转型
- 隐式转换也叫作自动类型转换, 由系统自动完成
- 从存储范围小的类型到存储范围大的类型
byte b = 4;
// 自动类型转换
short s = b;
char c = 98;
// 自动类型转换
int i = c;
强制类型转换
- 强制类型转换又称显示类型转换,向下转型
- 从存储范围大的类型到存储范围小的类型
- 可能存在精度丢失,因此,需要人为进行转换
short a = 3;
// 强制类型转换
byte b = (byte)a;
int i = 98;
// 强制类型转换
char c = (char)i;
注意:boolean类型不参与基本数据类型转换
JVM规范中,boolean变量作为int处理,也就是4字节;boolean数组当做byte数组处理。