百木园-与人分享,
就是让自己快乐。

(六)类型转换【和你学java】

Java是强类型语言,要进行有些运算的时候,需要用到类型转换。

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

 上一节说到的数值型数据类型,都可以进行运算。

 

我们按转换优先级由低到高排列如下:

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

 

(注:char本质也是数字,也能进行运算。)

 

可见数据类型的容量越大,优先级越高,且小数的优先级高于整数(虽long容量大,但float比long高)。

 

类型转换分两种:强制类型转换和自动类型转换。

转换方式 语法 说明
强制类型转换 (目的类型)变量名 从优先级的数据类型转化为优先级的数据类型。(高 ---> 低),有可能引发溢出。
自动类型转换 直接赋值,自动转换 从优先级的数据类型转化为优先级的数据类型。(低 ---> 高)

 

演练1:输入并执行下面代码,尝试一下类型转换,以及了解一些类型转换的相关注意事项。

public static void main(String[] args) {
​
        //强制转换
        int a = 127;
        byte b = (byte)a; //将int转变为byte,由高向低转换,需要强制转换。
        //byte b2= a; //如果不使用强制转换,则会报错编译不了。
        System.out.println(b);
​
        System.out.println(\"================\");
        //强制转换可能存在溢出的情况
        a = 128;
        b=(byte)a; // a值为128,而byte类型的最大值为127,使用强制转换后会引发内存溢出问题,输出不符合预期的值。
        System.out.println(b);
​
        System.out.println(\"================\");
        //强制转换可能存在精度损失问题
        System.out.println((int)23.23);
        System.out.println((int)-24.12F);
​
​
        System.out.println(\"================\");
        //自动类型转换c
        double c = a; //将int转变为double,由低向高转换,自动转换。
        System.out.println(c);
​
        System.out.println(\"================\");
        //char本质也是数字,可以进行运算
        char d=\'a\';
        int i=d+1; //char向int转换,由低向高,自动转换
​
        System.out.println(i);  //输出字母a代表的数字+1后的计算结果
        System.out.println((char)i); //强制转换(由高向低),输出字母a+1运算后的字符
​
    }

 

 

演练2:输入并执行下面代码,操作大数运算时,要注意溢出问题。

public static void main(String[] args) {
​
        int money = 10_0000_0000; //JDK7新特性,数字之间可以用下划线分隔
        int year= 20;
​
        int total =money * year; //计算结果溢出,故得不到预期数值。
        long total2 = money* year; //虽然将结果转化为long,但是转换之前数值已经存在问题,故也得不到预期数值。
​
        long total3 = money * (long)year; //将其中一个运算的数值转换成long,能输出正确结果。
​
        System.out.println(total);
        System.out.println(total2);
        System.out.println(total3);
        
    }

 

类型转换的注意点:

  1. 不能对布尔值进行转换。

  2. 不能把对象类型转换成不相干的类型。

  3. 在把高容量类型转换到低容量类型时,要强制转换。

  4. 转换时可能存在内存溢出问题或精度损失问题。


来源:https://www.cnblogs.com/yanchannel/p/15975131.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » (六)类型转换【和你学java】

相关推荐

  • 暂无文章