Java中的常量优化机制是在编译阶段对于只有常量的赋值或则运算在编译阶段就进行
例如
byte a = 3;
byte b = 4;
byte c = 3 + 4;
byte d = a+ b;
这段代码前三句编译通过,就是通过常量优化机制,在第三句中,等号右面是常量,会运算,然后判断结果是否在byte的范围内,是则通过
而第四句则编译不同,原因是,在byte short进行运算时会自动提升为int类型进行运算,运算后为int类型,不能赋值给低位的byte
String常量池见https://mp.csdn.net/editor/html/112004874