前者编译出错。
s + 1 的结果是int 型的。但
s += 1是隐含转换的。

解决方案 »

  1.   

    java是强类型的。这很基础啊。
      

  2.   

    解决:
    s = (short) s + 1;
      

  3.   

    s = (short)( s + 1 );
      

  4.   

    s += 1是隐含转换的JVM自动执行????
      

  5.   

    s += 1 属于自加运算,可以说是类型隐含转换的。但实际上我认为应该是自加运算是根据变量所存隼的字节,在最低位加1,有进位则进位,如果最高位有进位则丢弃这样计算的。而 s = s + 1 则是先有一个整型的32位值1,再和一个16位的s相加,所以需要强制转换类型先。
      

  6.   

    to iwenlong(贪吃龙)
      我写错了。
      

  7.   

    s+=1时隐含的转型
    s=s+1 时 1 认为是Int型所以s+ 1的结果是Int型