类型转换


类型转换

  • ​ 由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

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

    byte,short,char —>int—>long—>float—>double(小数优先级大于整数)

    image-20220702174011641

    强制类型转换

  • 指类型由高转到低,其格式为:(低的类型)变量名

    • 注意点
      • 不能对布尔值进行转换
      • 不能把对象类型转换为不相干的类型
      • 在把高容量转换为低容量时,需要强制转换,格式为(类型)变量名
      • 转换时可能出现内存溢出,或者精度问题!!后面有案例

    自动类型转换

  • 指类型由低转到高

public class DEMO04 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//byte 内存溢出-128-127
        double d = i;

        //强制转换   格式  (类型)变量名   高转到低
        //自动转换                       低转到高

        System.out.println(i);
        System.out.println(b);
        System.out.println(d);

        /*注意点
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.在把高容量转换为低容量时,需要强制转换  ,格式为(类型)变量名
        4.转换的时候可能出现内存溢出,或者精度问题!
         */

        System.out.println((int)23.7);//23.7是小数,高于整数int,所以需要强转
        System.out.println((int)-45.89);//分别输出23,-45,精度丢失!


        //==========
        System.out.println("=============");
        char g ='a';
        int f = g+1;//int高于char,低转高不需要强转
        System.out.println(f);//输出98
        System.out.println((char)f);//输出字符b//int高于char,高转低需要强转
    }
}

  • 输出结果对照

image-20220704000746750


精度丢失问题

   System.out.println((int)23.7);//23.7是小数,高于整数int,所以需要强转
   System.out.println((int)-45.89);//分别输出23,-45,精度丢失!

内存溢出问题

  • 注意默认int类输出,两个int值相乘,默认输出int类型。如何修改为long类输出?可以先对其中一个强制转换位long类型,如money*((long)years);此时整个表达式按long计算
public class DEMO05 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割,不会影响输出
        int money = 100_000_0000;//输出1000000000
        System.out.println(money);
        int years = 20;//A处
        int total = money*years;//B处
        System.out.println(total);//输出值太大,计算时溢出,显示-1474836480
        long total2 = money*years;//A*B
        System.out.println(total2);//默认是int,转换之前以及存在问题
        // 两个int值相乘(A*B),默认输出int类型,可以先对其中一个强制转换位long类型,如money*((long)years);

        long total3 = money*((long)years);//这样就按整个表达式按long计算
        System.out.println(total3);//成功输出20000000000
    }
}
  • 输出结果对照

image-20220704002339293

原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/271433.html

(0)
上一篇 2022年7月4日 06:35
下一篇 2022年7月4日 06:35

相关推荐

发表回复

登录后才能评论