1.自动类型转换
自动类型转换:指的是容量小的数据类型自动转换为容量大的数据类型。
常见数据类型的转换方式如下图所示:
值得注意的是:
- 蓝色虚线部分表示的是在转换时可能会有精度的损失。
- boolean类型的数据不可以自动转换。
代码示例1
int a=2345;
long b=a;
int c=b;//你会发现这行报错,因为long类型不能自动转换为int类型
按照示例1的代码,那么问题来了,是不是容量大的数据类型都不能转为容量小的数据类型呢?
其实不是!自动类型转换中也有特例:
整形常量为int型,可以自转为byte、short和char型,只要不超过该类型的表数范围就行。
代码示例2
final int b1=124; //定义一个int型的常量b1
byte b2=b1; //b1可以转换为byte型的b2
short b3=b1; //b1也可以转换为short型的b3
char b4=b1; //b1也可以转换为char型的b4
2.强制类型转换
强制类型转换:指的是强制转换一个数值的类型。但这可能会造数值的精度降低或溢出。
格式:目标类型 变量名=(目标类型) 值;
示例3 :精度丢失
double c1=3.14;
int c2=(int)c1;//结果c2为3,丢失小数点后面的数值
示例4:溢出
int d1=300;
byte d2=(byte)d1;//d1超过byte型数值范围[0~255],d2会变为另一个数值