short i=1;
i=i+1;error
i+=1;却可以,why?
大家知道为什么吗?

解决方案 »

  1.   

    short i=i+1
        因为 1 是 int类型  i是short类型 故不能相加
     而 i+=1 的类型一样所以可以
      

  2.   

    你解释我不认同哦,i=i+1 因为1和int型,所以i进行类型转换成int 之后再相加,结果是int
    而等式左边i是short 所以类型不符合,所以错误 如果是i=(short)(i+1)就没问题了
    可是i+=1;我解释不了,那位高人可以解释啊?
      

  3.   

    i+=1能够自动时行类型转换,参看JLS
           short i=9;
           i+=1;
    上面的字节码如下:
     0:   bipush  9
     2:   istore_1
     3:   iload_1
     4:   iconst_1
     5:   iadd
     6:   i2s//   int转换成short
     7:   istore_1
     8:   return