首页 > 代码库 > 【基本数据类型转换】自动转换 强制转换

【基本数据类型转换】自动转换 强制转换


类型装换
        long l = 123456789123;//整数默认是int类型,由于数值123456789123超过了int类型的范围,所以报错:The literal 123456789123 of type int is out of range(超出范围)
        long l2 = 123456789123l;
        int x = Integer.MAX_VALUE + 1;//将一个int类型的整数+1后赋给一个int类型的变量,虽然结果溢出,但是不会报错(因为结果仍为int类型)
        int x2 = 1l ;//必须强转,否则会损失精度,Type mismatch: cannot convert from long to int
        int x3 = (int) 1l ; 

        short s = 3;
        s += 4; //首先的首先,编译器在【编译】的时候自动进行了强转,相当于s=(short)(s+4);此后,在【运行】时,先计算s+4,此时会将s转为int类型,所以结果也为int类型,然后执行强转语句
        s = s + 4;//必须强转,否则会损失精度Type mismatch: cannot convert from int to short
        s = (short) (s + 4);
        s = s + 0;//必须强转,否则会损失精度Type mismatch: cannot convert from int to short

        short s1 = 0, s2 = 0;
        short s3 = s1 + s2;//注意s1 + s2的结果为int类型
        short s4 = (short) (s1 + s2);
        short s4 = s1 + 1;

        float f = 2.3;//浮点数默认是double类型,赋给float类型的变量时,可能会损失精度,所以编译不通过。Type mismatch: cannot convert from double to float
        float f3 = 2.3f;
        float f2 = (float) 2.3;//自己强转的话,怎么都可以

        byte b1 = 120 + 7;//120+7的结果是确定的,不会溢出,所以编译器能自动将【int】类型的数据127强转成了【byte】类型
        byte b2 = (byte) (121 + 7);//自己强转的话,怎么都可以
        byte b3 = 121 + 7;//必须强转,否则会损失精度Type mismatch: cannot convert from int to byte
        byte b4 = 127;//不会溢出编译器能自动将【int】类型的数据127强转成了【byte】类型
        byte b5 = 128;//必须强转,否则会损失精度Type mismatch: cannot convert from int to byte

        System.out.println((byte)(128));//-128,这几条数据全部溢出了,但我们强制转换了,所以编译不会报异常
        System.out.println((byte)(129));//-127
        System.out.println((byte)(255));//-1
        System.out.println((byte)(256));//0
        System.out.println((byte)(257));//1

 char类型可以自动转换为int类型数据
        char c = ‘0‘;
        byte b = ‘0‘;
        char c2 = 0;
        byte b2 = 0;
        System.out.println(1 + c);
        System.out.println(1 + b);
        System.out.println(1 + c2);
        System.out.println(1 + b2);
        System.out.println((char) 49);
技术分享



来自为知笔记(Wiz)


【基本数据类型转换】自动转换 强制转换