第十讲——类型转换

第十讲——类型转换

  • 因为JAVA是强类型语言,所以在不同类型时,需要用到类型转换

低------------------------------------------------------------------------------------->高

byte(Z字节) short char-->int-->long-->float(浮点数)-->double

  • 运算中,不同类型的数据,先转换成同一类型再进行计算。

强制类型转换

自动类型转换


强制类型转化

高(转换)——>低

public class demo01{
    public static void main(String[]args){
        int   i = 128;
        byte i2 =(byte)i;
        //强行转换的格式   (类型)变量名
        System.out.println(i2);//这里会输出-128
//这个就是内存溢出,大的转换小的,小的吃不下,溢出了
    }
}
  • 强制转换要小心数据溢出
public class demo02{
    public static void main{
       char a ='A';
        int b = a+1;
        System.out.println((char) b);
        //输出B  因为转换类型为char了 是字符
        System.out.println((int)a);
        //输出65  大写A编码是65 +1后变成66就是B了
    }
}

自动类型转换

低———>高

public class demo03{
    public static void main(String[]args){
        int i2 =1314;
        double i3= i2;
        System.out.println(i3);
        //这里会输出1314.0 因为double是浮点数
    }
}
  • 从低到高会自动转换而且不会有误差

强制转换的计算方法

使用场景是在用低级类型时候,计算溢出的解决方案

public class demo04{
    public static void main(String[]args){
        int money = 10_0000_0000;
        int years = 22;
        System.out.println(money*years);
        //这个时候输出值为525163520   数据大于21亿所以溢出了
        long total = money*years;
        System.out.println(total);
/*还是输出原值,原因是虽然total值是long,但是money和years还是int值 
,这里做的运算也就是把int类型算出来的数据,给total ,所以输出的值还是没变*/
        System.out.println((long)money*years);
        //在运算其中数据换算成long才能解决,默认改变一个就全都改变
    }
}

years yes

money

total to透

posted @ 2020-08-22 20:04  项晓忠  阅读(63)  评论(0)    收藏  举报