这两天重新看了下java的基础知识,发觉了一个问题,代码如下:public class PackageCharacter{
public static void main(String[] args){
byte b1 = 45;
byte b2 = 34;
byte b3 = b1 + b2;
byte b = 22;
}
}我想问的是为什么b3通过不了,而b通过了。甚至我改成byte b = (int)22也通过了

解决方案 »

  1.   

    byte b3 = b1 + b2;通过加法运算得到的是一个int值,必须强行转换
    byte b = 22;直接使用常数赋值时,只要这个数能被byte表示(-128~+127)就是合法的,不需要强制转换。
      

  2.   

    呵呵,我现在也知道是自己想多了。呵呵,不过还有一个问题就是byte b = 22;中的22是什么类型呢?对应的b3=b1+b2,中的b1+b2得到的是int型,难道22不是int型吗?
      

  3.   

    b是byte型的啊!原因一楼说的很清楚。