byte 只有两个字节。。也就是 -127 ,127之间的数字,ASCII中的字符。否则出错。

解决方案 »

  1.   

    出错是因为这样一个原因:byte类型的s和int的1(Java中整数的类型是int型),这样在运算的时候,运算出来的结果就是int型的,当把int类型的数据赋给byte类型的s时,类型不匹配,所以发生错误。正确的写法:byte s = 0;
    s = (byte)(s + 1);
      

  2.   

    s = s + 1; 
    应该是: s = (byte)(s + 1);
    原因是:对主数据类型执行任何算术或按位运算,只要它们“比int小”(如:byte),那么在正式执行运算之前,那些值会自动转换成int。这样一来,最终生成的值就是int类型。所以只要把一个值赋回较小的类型,就必须使用强制类型转换。
    至于为什么+=可以编译通过,估计是编译器在没有处理转换为int的操作。
      

  3.   

    faint,上个厕所,就发了这么多,浪费。