0
点赞
收藏
分享

微信扫一扫

类型转换概述

niboac 2022-01-24 阅读 42

低----------------------------------------------------->高
byte,short,char–>int–>long–>float–>double

强制转换

格式: (类型)变量名 (高----低)

        int i=128;
        byte b=(byte)i;//强制类型转换
        System.out.println(i);
        System.out.println(b);//内存溢出

输出结果:
在这里插入图片描述
这里b的值为什么出现-128呢?i的值明明是128,这我们需要的了解一下Byte ,Byte为byte的类,我们到Byte源码去看一下
在这里插入图片描述
它的的取值范围是-128-127;所以内存溢出了。

自动转换

低----高

int i1=128;
        double b1=i;//自动转换
        System.out.println(i1);
        System.out.println(b1);

输出结果:
在这里插入图片描述

类型转换的注意点

1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换为低容量的时候进行强制转换
4.转换的时候可能存在内存溢出,或者精度问题
举例:

System.out.println((int)23.7);
        System.out.println((int)-47.89f);

输出结果:
在这里插入图片描述
操作比较大的数的时候,注意溢出问题

public class Demo03 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK新特性  数字之间可以用下划线分割
        int money=10_0000_0000;
        int year=20;
        int total=money*year;//-1474836480  计算的时候溢出了
        long total2=money*year;//-1474836480  默认是int  转换之前已经存在问题了
        long total3=money*((long)year);
        System.out.println(total);
        System.out.println(total2);
        System.out.println(total3);
    }
}

输出结果:
在这里插入图片描述

举报

相关推荐

0 条评论