Day06
类型转换
为什么要进行类型转换
- 由于Java是强类型语言,所以在进行一些运算时要进行类型转换
- 运算中不同数据先转换为同一种数据再进行运算
低---------------------------------------------------------->高(字节数)
byte,short,char,int,long,float,double //浮点数的优先级较高
强制类型转换
- 高字节转换为低字节时需要强制类型转换
- 过大会出现内存溢出
- 浮点数转换时存在精度问题
public class Demo03 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//需要强制转换类型
System.out.println(b);
}
}
程序运行结果
byte的范围是-128~127;因此在int类型转化为byte类型时,过大就会溢出
另外低字节向高字节转换时也要注意
public class Demo03{
public static void main(String[]args){
int i1=10_0000_0000;//JDK7新特性,在数字直接加入_并不会影响输出
int i2=50;
int i3=i1*i2;//正常来算i1*i2应该是500亿,超出了int类型的字节数,因此会出现内存溢出的情况
long L1=i1*i2;//如果我们使用long类型去储存i1*i2,是不可以使用这种形式的,因为两个int型进行运算默认输出还是int型,它会把溢出之前的部分输出然后转换成long型
long L2=i1*((long)i2);//这种计算才是正确的,低字节与高字节运算时会自动转换为高字节
System.out.println(i3);
System.out.println(L1);
System.out.println(L2);
}
}
程序运行的结果为
浮点数转换时会存在精度问题
public class Demo03{
public static void main(String[]args){
System.out.println((int)22.96369);
System.out.println((int)-53.269);
}
}
程序运行结果为
显然在转换为整型时浮点型舍去了小数部分,因此在使用时一定要注意