日期:2014-05-20  浏览次数:20587 次

小知识点,大问题,对我个人来说,求解。。。。
byte b1 = 1;//整数常量默认不是int的吗,为什么不用显示转换
byte b2 = 2;
byte b3 = 1+2;//编译通过,1+2不是int的吗,为什么不用显示转换
byte b4 = b1+b2;//编译不通过,为什么编译不通过
int b5 = b1+b2;//编译通过,为什么编译通过


是不是被JVM优化了,只是猜测,哪位前辈能给个肯定的回答

------解决方案--------------------
byte b1 = 1;//这是赋值,这个1不是你说的常量,b1才是常量
byte b2 = 2;
byte b3 = 1+2;//同上
byte b4 = b1+b2;//已经超过byte的范围
int b5 = b1+b2;//这个你懂的三。
------解决方案--------------------

byte b4 = (byte)(b1+b2);

因为b1和b2都是变量,编译的时候不知道类型。。。要强转。

还有1当然是常量,b1是变量好不好。。。

探讨

byte b1 = 1;//这是赋值,这个1不是你说的常量,b1才是常量
byte b2 = 2;
byte b3 = 1+2;//同上
byte b4 = b1+b2;//已经超过byte的范围
int b5 = b1+b2;//这个你懂的三。