你的加里下雨了奥

导航

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);
    }
}

程序运行结果

image-20220105120920550

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);
    }
}

程序运行的结果为

image-20220105132509311

浮点数转换时会存在精度问题

public class Demo03{
    public static void main(String[]args){
        System.out.println((int)22.96369);
        System.out.println((int)-53.269);
    }
}

程序运行结果为

image-20220105133312263

显然在转换为整型时浮点型舍去了小数部分,因此在使用时一定要注意

点击跳转到B站up遇见狂神说原视频

posted on 2022-01-05 13:41  风带不走的遗憾  阅读(22)  评论(0编辑  收藏  举报