自动转型还好,有时候不经意间就用到了。但是当不经意间用到强转是就尴尬了。现在就我个人的理解做出一点见解。
一、
当小类型数据转为大类型数据时系统是会自动完成的。
对于上述代码就是很常见自动转型,这里的大数据小数据是相对于数据在内存中的大小来说的对此我们拿出int和double的取值范围与int和double在内存中的大小做一下对比
int的取值范围-2,147,483,648(-2^31)~~~2,147,483,647(2^31 - 1);,int数据类型是32位,且默认值为0。
double的取值范围-2^1024 ~ +2^1024,double数据类型是64位,且默认值为0.0d
不难看出double的64位是大于int的32位的。
下面来看输出结果
已经有整数类型的6转成了double类型的6.0(关于转换后数据是如何变化的后续会出)
二、当大数据向小数据转换时就需要用到强转了具体的做法很简单
此时定义一个int类型的a 赋值位6.0显然违反了上述int类型数据为仅整数的规则接下来看操作
在数据前加上(int)就把6.0转换为我么想要的int类型的数据。
同理
当我们想把float类型的数据赋给int类型数据的对象时,也需要强转如下图
解决办法
到此结束感谢各位看官,慢走!