【第十二节】变量与运算符-基本数据类型的变量间自动提升规则

发布时间:2024年01月11日

基本数据类型的变量间的运算规则

1.这里提到可以做运算的基本数据类型有七种,不包含boolean类型

2.运算规则包括:

? ? ? ? 自动类型提升

? ? ? ? 强制类型转换

规则:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型

byte ------>short ---------->?int ---->long ------> float? -------->double?

特别的:byte、short类型的变量之间做运算,结果为int类型?

说明:此时容量的小或大,并非指占用的内存空间的大小,而是指数据范围的大小

// 变量自动提升测试
class VariableAutoImproveTest {
    public static void main(String[] args) {
        byte a1 = 13;
        short a2 = a1;
        int a3 = a2;
        long a4 = a3;

        float f5 = a4;
        double f6 = f5;

        System.out.println(f6);

        int a5 = a1 + a1;
        int a6 = a1 + a2;
        long a7 = a3 + a4;

        float f7 = f5 + a7;
        float f8 = 12.3f;
        float f9 = 27.4f;
        float f10 = f8 + f9;
        System.out.println(f10);
        // 特殊情况1
        // 测试不通过
        // byte = a1+ a1;
        // short = a1 +a2;
        // 特殊情况2:char
        char c1 = 'a';
        int c2 = c1 + a1;
        System.out.println(c2);

        // 练习1
        long l5 = 123L;
        long l6 = 123; // 理解为自动类型提升
        // long l7 = 12377888888; 12377888888 理解为int类型,因为超出int类型,所以报错
        long l7 = 12377888888L;  // 此时的12377888888L就是使用8个字节存储的long类型的值
         
        // 练习2
        float fq1 = 12.3f;
        // float fq2 = 12.3  不满足自动提升的规则, 12.3 会被认为是double类型

        // 练习3 
        byte bq5 = 10;
        // 整型常量规定为int类型
        int iq5 = bq5 +1;
        // 浮点型常量规定为doule 类型
        double db5 = bq5 + 12.3;

        // 练习4 为什么不能以数字开头作为变量名
        /*
         int 123L = 124;
         long i9 = 123L; // 无法分清到底是赋值的变量 还是赋值的是long类型的123的数字
        */
    }
}

文章来源:https://blog.csdn.net/txl910514/article/details/135518715
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。