刚刚开始学java,有一个赋值问题,求解:
byte x=3;
在java中,上面定义变量x并初始化,3为默认数据类型 int,怎么会把这个int类型赋值给byte 类型的x,怎么会合法的。请各位高手解释解释,多谢

解决方案 »

  1.   

    byte x=3;本身就是byte类型了
    x+=3;此时系统不会报错,因为是复合运算符
    但是
    x=x+3会报错,因为简单运算符不会自动转换为左边的byte,右边系统会默认为int
      

  2.   

    byte占8位,1个字节。3用两位就够了。所以可以转成byte
      

  3.   

    关注一下,似乎在初始化的时候,用int x = 5.6;这样就不对
      

  4.   

    编译器自动检查,如果不超出byte范围,就会自动把int转为byte保存,如果超出byte范围就会报编译错误
      

  5.   

    因为编译器很明显能检查出byte能存储常量3如果是这样就不行了
    int a = 3;
    byte x = a;//compile error