强制转换与自动转换
强制转换是由高向低转换,自动转换是又低到高转换。
自动转换如:
public class Demo01 {
public static void main(String[] args) {
?
long a=128l;
float f=a;
System.out.println(a);
System.out.println(f);
}
}
自动转换时注意溢出问题:
int a=100_0000;
int b=3000;
long c=a*b;
System.out.println(c);
两个 int 相乘得到的结果是 int, 相乘的结果超出了 int 的表示范围,出现溢出。这种情况,一般把第一个数据转换成范围大的数据类型再和其他的数据进行运算。
强制转换如:
public class Demo01 {
public static void main(String[] args) {
?
?
float f=128.3f;
long a=(long)f;
int i=128;
byte b=(byte)i;
System.out.println(f);
System.out.println(a);
System.out.println(i);
System.out.println(b);
}
}
强制转换时遇到的问题:精度问题与溢出问题。
上图强制转换就出现了丢失精度,数据溢出(128超出了byte 类型表示的范围)。