Java基础语法 自动类型提升和强制类型转换

基本数据类型转换

image-20220924233314310

强制类型转换

image-20220924233342604

package BasicGrammar;
/*
基本数据类型之间的运算规则:

前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。

1. 自动类型提升:
    结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
	byte 、char 、short --> int --> long --> float --> double

	特别的:当byte、char、short三种类型的变量做运算时,结果为int型

2. 强制类型转换:自动类型提升运算的逆运算。
1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失。
说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量



*/

public class VariableTest2 {
    public static void main(String[] args) {
        //自动类型提升:
        byte b1 = 2;
        int i1 = 129;
        //编译不通过(超出范围)
        //byte b2 = b1 + i1;
        int i2 = b1 + i1;
        long l1 = b1 + i1;
        System.out.println(i2);

        float f = b1 + i1;
        System.out.println(f);

        short s1 = 123;
        double d1 = s1;
        System.out.println(d1);//123.0
        System.out.println("=================================================================");

        //***************特别地*********************
        char c1 = 'a';//97
        int i3 = 10;
        int i4 = c1 + i3;
        System.out.println(i4);

        short s2 = 10;
        //char c2  = c1 + s2;//编译不通过

        byte b2 = 10;
        //char c3 = c1 + b2;//编译不通过

        //short s3 = b2 + s2;//编译不通过

        //short s4 = b1 + b2;//编译不通过
        //****************************************
        System.out.println("=================================================================");


        //强制类型转换:

        double f1 = 12.9;
        //精度损失举例1
        int e1 = (int)f1;//截断操作
        System.out.println(e1);//12

        //没有精度损失
        long l2 = 123;
        short s3 = (short)l2;

        //精度损失举例2
        int i5 = 128;
        byte b = (byte)i5;
        System.out.println(b);//-128



        //1.编码情况1:
        long l = 123213;
        System.out.println(l);
        //编译失败:过大的整数
        //long l11 = 21332423235234123;
        long l11 = 21332423235234123L;
        System.out.println("=================================================================");

        //变量运算规则的两个特殊情况
        //****************
        //编译失败
        //float f1 = 12.3;
        float f11 = (float)12.3;
        //2.编码情况2:
        //整型常量,默认类型为int型
        //浮点型常量,默认类型为double型
        byte b11 = 12;
        //byte b11 = b + 1;//编译失败

        //float f11 = b + 12.3;//编译失败
        System.out.println("=================================================================");






    }
}

posted @ 2022-09-25 00:27  Swift周振宇  阅读(49)  评论(0)    收藏  举报