关于计算问题总结

byte b1=1,b2=2,b3,b6; 
final byte b4=4,b5=6
b6=b4+b5; 
b3=(b1+b2); 
System.out.println(b3+b6);
 
运行时会报编译错误。红色不会通过。
 
原因

表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。(没有被final修饰的会这样)

①所有的byte,short,char型的值将被提升为int型;

②如果有一个操作数是long型,计算结果是long型;

③如果有一个操作数是float型,计算结果是float型;

④如果有一个操作数是double型,计算结果是double型;
而声明为final的变量会被JVM优化,第6行相当于 b6 = 10
若有不对,请指正
原文地址:https://www.cnblogs.com/wenjieyatou/p/5955285.html