Day11 类型转换

类型转换

由于Java是强类型语言,所以有些运算需要用到类型转换

低————————————————————>高

byte-->short-->char-->int-->long-->float-->double

(小数的优先级大于整数)

运算中,不同类型的数据先转化为同一类型,然后进行运算。

public class Demo05 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//强制转换   (类型)变量名      高--低       int从下转(优先级)
        double c = i; //自动转换   低--高                          int从上转(优先级)

        System.out.println(i);  //结果是128
        System.out.println(b);  // 结果是-128
        System.out.println(c);
        //b的结果是-128的原因是   由于byte本身范围是(-128~127),所以内存溢出了


        /*
        注意点
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相关的类型,
        3.在把高容量转化为低容量的时候。强制转换
        4.转换的时候可能存在内存溢出,或者精度问题!
        */

        System.out.println("=========================================");
        System.out.println((int)23.7);//结果为23       精度问题
        System.out.println((int)-45.89f);//结果为-45     精度问题


        System.out.println("=========================================");
        char d = 'a';
        int e = d+1;
        System.out.println(e);//结果为98
        System.out.println((char)e);//结果为b



    }
}
public class Demo06 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        System.out.println(money);//结果为10亿 对的  所以数字用下划线分割不影响计算
        int years = 20;
        int total = money*years;
        System.out.println(total);//结果为-1474836480, 因为int的范围是正负21亿   所以计算的时候溢出了
        long total2 = money*years;//默认是int   转换之前已经存在问题了?
        System.out.println(total2);//结果还是-1474836480
        long total3 = money*(long)years;//先把一个数转换为long
        System.out.println(total3);//结果是2百亿 对了


        //注意 Long类型数字结尾  如  10_0000_0000L    结尾的L尽量大写   可以与数字1区分

    }



}
posted @ 2023-11-27 21:01  白小帆  阅读(24)  评论(0)    收藏  举报