java中整数运算是取模的,在你超出计算范围时,不会上溢或下溢,相反发生回转,其实a+b的返回类型是int,如int c=a+b不会出错,要不就byte c=(byte)(a+b)

解决方案 »

  1.   

    为什么两个byte相加会超出范围而,byte c=1+2;正确呢
      

  2.   

    如果byte c=127+1是什么情况?你试试
      

  3.   

    回:为什么两个byte相加会超出范围而,byte c=1+2;正确呢。因为1和2是Integer Literal,所以Java编译器能首先判断出1+2的两个操作数都分别落入byte的数值范围内),故能编译通过;
    而a+b的情况下,Java编译器不能确定a+b是否超出,因而对于有Identifier参与的加法式会取integer为结果