b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。
而b=133+4 不能通过编译
正如楼上所说,这是JDK1.5以后的一个新特性byte范围内的数据创建了一个常量池的原因。
是不是二个数相加之和在-128~127之间时,int类型的数可以自动向下转型
这个和自动转型无关,java的自动转型叫自动类型提升故名思议是向上提升的,精度会提高而不会降低。正如楼上所说它是当常量来计算的,你如果把代码写成- byte b;
- int a=3; b = a + 4;
复制代码 那么编译肯定就报错了
|