byte z = 62;  //=======①
byte f = 23 + 39;  //======②byte c = 23; //=======③
byte s = 39; //=======④
byte p = c + s; //======⑤我想知道为什么第5行会编译报错?
第2行为什么不会报错难道“23+39”最后不是当做int类型来进行赋值给byte f吗?
第1行与第2行有什么不同?
第2行与第5行有什么差异?
求各位大神帮忙解答,最好详细点万分感谢

解决方案 »

  1.   

    byte、int、long等等这些都是java中的基本数据类型,基本数据类型中的低级类型到高级类型可以自动转换,高级类型到低级类型则需要强制转换。
    但是你给的代码的1-4行是属于直接数赋值,数值是int型的,所以只要没有超出byte的范围就可以直接赋值了。
    第5行就属于类型转换了,不加个强制转换当然会报错。
      

  2.   


    你看图里面的int是可以直接给其他类型赋值的