类型转换

  • 由于java是强类型语言,所以要进行有些运算的时候,要进行类型转换
  • 低----------------------------------------------------->高
  • byte,short,char---->int--->long--->float--->double
  • 小数的优先级大于整数
  • 运算中,不同类型的数据先转换为同一类型,然后在进行运算。

强制类型转换

(类型)变量名 高----->低

public class six {
    public static void main(String[] args) {
        int i = 128;
        byte a = (byte)i;//内存溢出
        System.out.println(a);
    }
}

输出结果为:-128

因为数据类型byte的长度是-128 ~ 127,超出范围就会出现内存溢出的问题

自动类型转换

低----->高 不需要在前面加类型

public class six {
    public static void main(String[] args) {
        int i = 111;
        double a = i;
        System.out.println(a);
    }
}

输出结果为:111

注意点

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

数据类型转换例子

public class six {
    public static void main(String[] args) {
        System.out.println((int)23.7);
        System.out.println((int)-35.89);
    }
}

输出结果为:

23

-35

public class six {
    public static void main(String[] args) {
        char a = 'a';
        int x = a;
        System.out.println(x);
        System.out.println((char)x);
    }
}

输出结果为:

97
a

public class six {
    public static void main(String[] args) {
        int money = 20_0000_0000;
        int years = 20;
        int total = money * years;  //1345294336计算的时候溢出了
        long total2 = money * years;  //默认是int,转换之前已经存在了问题
        long total3 = money * (long)years;  //先把一个数转换为long
        System.out.println(total);
        System.out.println(total2);
        System.out.println(total3);
    }
}

输出结果为:

1345294336
1345294336
40000000000

posted on 2022-12-24 19:08  学Java的菜坤  阅读(32)  评论(0)    收藏  举报