Java语言基础面试题之变量相加和常量相加的区别

package cn.mldn.demo;

public class Test1_DataTypeConversion {

    public static void main(String[] args) {

            byte b1  = 3;
            byte b2  = 4;
//            byte b3 = b1 + b2;
//            System.out.println(b3);
//            从两个方面
//            1. byte 与 byte (或者 short char ) 进行运算的时候会提升int 两个int 类型相加的结果也是int 类型
//            2. b1 和  b2 是两个变量,变量存储的是变化 ,在编译的时候无法判断里面的值,相加有可能会超出byte的取值
//            
            byte b4 = 3 + 4;
            System.out.println(b4);

//            java编译器有常量优化机制


    }

}

b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值

byte类型的变量在进行运算的时候,会自动类型提升为int类型

3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了

Java编译器有常量优化机制 和直接赋值7 是一个意思

你可能感兴趣的:(JAVA基础笔记)