Java有以下八大基本数据类型:
int byte short long double float char boolean
基本数据类型又分为数字型,字符型(char)与布尔型(boolean)
类型 | 所占空间(字节) | 范围 | 包装类 |
---|---|---|---|
byte | 1 | -128~127 | Byte |
int | 4 | -2,147,483,648~2,147,483,647 | Integaer |
short | 2 | -32768~32767 | Short |
long | 8 | -263~263 -1 | Long |
float | 4 | Float | |
double | 8 | Double | |
char | 1 | \u0000~\uffff | Character |
boolean | 1 | Boolean |
自动转换规则
- 布尔型不参与转换
- 规则: byte/char/short -> int -> long -> float -> double
如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。
将小范围类型变量转换成大范围类型的变量。Java会自动扩宽类型
看上面那张图,各个基本数据类型的取值范围都有了,如果一个取值范围包括了另一个的,那么赋值时,小的可以自动转换成大的
例子:
long d = 333; float e = d; //可以
short a = 1; char b = a; //不行,因为取值范围不是包含,而是交叉
int a = 1; byte b = a; //不行,大的转成小的,要强制类型转换,byte b = (byte) a;