9是个int类型,跟byte+运算是取最大容纳数据类型的
所以为int

解决方案 »

  1.   

    byte s = 9;
     byte i = 9;
     byte c = s+i;但如果是这样写的还是不能编译。这又是为什么呢?
      

  2.   

    byte s = 9;
     byte i = 9;
     byte c = s+i;改为:byte s = 9;
     byte i = 9;
     byte c = (byte)(s+i);
      

  3.   

    因为byte跟byte相加可能存在的精度损失
    你可以
    byte c = (byte)s + i;
      

  4.   

    哦应该是byte c = (byte)(s+i);
      

  5.   

    byte s = (byte)9;
    byte i = (byte)9;
    byte c = s+i;
      

  6.   

    我知道强制转化可以,我只是想知道为什么会出现这种情况,这是JAVA语法规定的吗?
    谢谢各位!!
      

  7.   

    s + i被自动封装为整型,与 c 的类型冲突。(byte型变量不可参与算术运算,此时s和i被转为整型变量进行运算,其结果也是整型)
    You can try  "byte c = (byte)(s + i);"
      

  8.   

    原来是这样的,byte不能参于算术运算,也就是说运算时按默认的数据类型int进行计算了,这样的话short也不行了。
    谢了。给分