1、自动类型提升:
规则:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型
这里的容量大小,并非占用的内存空间的大小,而是指表示数据范围的大小
Byte、short --> int --> long --> float --> double
特殊的,byte、short、char类型的变量之间做运算,结果为int类型
//特殊情况1:
byte b = 12;
short s = 10;
short s1 = b + s; //编译不通过
- //正确方式
- Int I;
- I = b + s; //正确
//特殊情况2: char
char c1 = ‘a’;
byte b2 = 10;
char c2 = c1 + b2;//编译不通过
Int i2 = c1 + b2; //正确
强制类型转换:
将数据范围大的强制转换成数据范围小的,会有精度损失
举例:
double d1 = 12;
int i3= (int)d1;
//精度损失的例子1
double d2 = 12.9;
int i4 = (int)d2;//结果为12
//精度损失的例子2
int i5 = 128;
byte b3 = (byte)i5; //结果为-128