基本数据类型之间存在默认转换和强制转换
boolean类型不能转换为其他数据类型
默认转换与强制转换
-
默认转换(由小到大)
byte,short,char➡int➡long➡float➡double
byte,short,char互相之间不转换,他们参与运算首先转化为int类型。
-
强制转换
目标类型 变量名=(目标类型)(被转换的数据);
如果被转换的数据是一个变量(不是表达式)的时候可以不加括号。
例如:
int i=1000;
byte b=10;
// byte c = i+b;
byte c =(byte)(i+b);
口诀:
byte,short,char一律自动转换为int
小的用大的接收不用强转
大的用小的接收需要强转
强制类型转换的原理
![](https://i-blog.csdnimg.cn/blog_migrate/08c15e99a9fdd650010d8436ed0e29e7.png)
如图因为位数不够,计算机在做加法之前会先把byte a 补全
![](https://i-blog.csdnimg.cn/blog_migrate/82427b210395899db7cb0396180095cb.png)
之后会进行相加
![](https://i-blog.csdnimg.cn/blog_migrate/10533945151ae649dffcfc6bf6ff62d3.png)
加完之后红框内的数据会被计算机截掉
所以说强制类型转换有精度损失