下面的写法:
Byte b = new Byte(12);//错误!byte b=12;//合法!!Byte b = new Byte((byte)12);//正确.
为什么啊?!

解决方案 »

  1.   


    因为Byte的构造函数是:Byte(byte)而不是Byte(int)
    int的取值范围毕byte要大啊,所以就不能这样定义了。
      

  2.   

    看看Byte的构造函数 它用什么参数 你就得用什么参数
      

  3.   

    楼上几位说的,不是我本想问的.Byte b = new Byte(12);//错误!byte b=12;//合法!!关键是上面的两个.
      

  4.   

    楼上几位说的是正确的,
    Byte b = new Byte(12);//错误是因为JAVA将12作为整形数来处理,而Byte的构造方法要求带一个byte型的数字进去,故而出错。
    byte b = 12 ; //合法是因为其中隐含了一个类型转换,如果你试试下面的代码应该会有点体会short s1 = 1 ;
    short s2 = 2 ;
    short s3 = s1 + s2 ;//这里会出错,因为JAVA在进行运算的时候会把s1和s2转换为int型,然后赋值给short型的s3的时候就会出错。Byte b = new Byte((byte)12);//正确。如果你还不明白我真没办法解释了……
      

  5.   

    byte 像int类型一样是一个基本的数据类型就不用new来初始化..
    Byte是一个类..声明对象用new和一个初始值..