自动类型转换
# 自动类型转换
菜鸟教程:Java 自动类型转换 (opens new window)
# 规则
低 ------------------------------------------> 高
byte,short,char —> int —> long —> float —> double
1
2
2
数据类型转换必须满足如下规则:
不能对 boolean 类型进行类型转换。
不能把对象类型转换成不相关类的对象。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
1
2
2
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45
1
2
2
# 自动类型转换(隐式转换)
char word_1 = 'a';
int numOfWord_1 = word; // numOfWord_1 = 97
char word_2 = 'A';
int numOfWord_2 = word_2 + 1; // numOfWord_2 = 66
1
2
3
4
5
2
3
4
5
# 强制类型转换(显式转换)
- 转换格式要是兼容的。
- 格式:
(type)value
type 为强制转换后的类型。
int num_1 = 127;
byte num_2 = (byte)num_1;
double num_3 = 3.1415926;
float num_4 = (float)num_3;
1
2
3
4
5
2
3
4
5
# 隐含强制类型转换
- 整数的默认类型是 int。
- 浮点数的默认类型是 double,在定义 float 类型时必须在数字后面跟上 F 或者 f。
double number_1 = 2.22;
float number_2 = 3.33F;
1
2
2
编辑 (opens new window)
上次更新: 2022/09/26, 16:55:15