数据类型转换和强制转换

 

 

自动类型转换

指的是容量小的数据类型可以自动转换为容量大(占多少空间)的数据类型。如下图中,黑色实线表示数据无丢失的自动类型转换,虚线表示在转换中可能有精度丢失。

 

特例:int 可以转成short、byte、char,只要不超过要转换为的类型的表述范围

public class Test{
    public static void main(String[] args){
        //容量小的转换为容量大的
        int a = 1234;
        long b = a;
        double h = a;
        // int c = b;   // 会报错

        char c = 97;    //97是整型
        byte d = 123;   // 123也是整型

        System.out.println(b);
        System.out.println(h);
        System.out.println(c);
        System.out.println(d);
    }
}

 

强制类型转换

可能损失精度,语法  (type)var

public class Test{
    public static void main(String[] args){
        double a = 3.9415;
        int b = (int) a;
        System.out.println(b);

        int c = 97;
        char d = (char) c;
        System.out.println(d);

        //强制转换超过类型的表述范围会出现一个没有意义的数字,并不会报错
        int e = 300;
        byte f = (byte) e;
        System.out.println(f);
    }
}

 

类型转换的常见错误

1.操作数太大了要留意是否会溢出,尤其是整数操作时

2. L和l的问题:

(1)命名变量含有I时,用L好区分;

  (2) long类型使用L,不用小写l

  一种 int 乘法转 long 的方法

    int salary = 2e9; // 未超过21亿的范围
    int year = 20;
    long total = 1L * year * salary;
    

 

posted @ 2022-01-22 16:47  我就一水  阅读(155)  评论(0)    收藏  举报