一.隐式转换(自动类型提升)
把一个取值范围小的数值,转换为一个取值范围大的数据
1.取值范围:
byte<short<int<long<float<double
2.什么时候转换:
数据类型不一样,不能进行计算,需要转成一样的才可以进行计算。
3.转换规则1:
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
示例:
byte b1=12;
byte b2=13;
int re =b1+b2;
4.转换规则2:
byte short char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
示例:
byte b1=12;
short b2=13;
long b3=14;
long re =b1+b2+b3;
先将b1、b2转换为int,再与b3相加,转换为long
二.强制转换
把一个取值范围大的数值,赋值给取值范围小的变量。
格式:目标数据类型变量名=(目标数据类型)被强转的数据;
示例:
package com.itheima.learn;
public class YunSuanFu4 {
public static void main(String[] args) {
long b1=12;
int b2=(int)b1;
System.out.println(b2);
}
}
运行结果:
12
注意:
被转换的数据过大,可能会出错
示例:
package com.itheima.learn;
public class YunSuanFu4 {
public static void main(String[] args) {
int b1=300;
byte b2=(byte)b1;
System.out.println(b2);
}
}
运行结果:
44
原因:是因为byte的取值范围为(-128,127),300过大,超出了byte的取值范围,所以报错