short s1 = 1;
s1 = s1 + 1;s1 += 1;
这两者为什么产生的结果不一样呢?希望能解释一下

解决方案 »

  1.   

    s1 = s1 + 1; 因为系统按照int进行计算了,然后把int给short就出错了。
      

  2.   

    因为1是int型的,所以s1 + 1结果是int型的值,而s1 += 1这样写不会晋升,为了方便。
      

  3.   

    大多时候,我觉得不会用short这么一个东西,其实它速度恐怕没有int快。
      

  4.   

    但是如果这样写也会出错的
    short s = 1;
    s = s + (short)1;
    或者是:
    s = (short)(s + 1)
    也会出错
      

  5.   

    short s = 1; 
    s = (short)(s + 1) 
    可以的不会出错的啊
      

  6.   

    short s1 = 1;
    s1 = s1 + 1;     s1+1的结果是int类型的,而s1是short类型的,所以在编译时无法通过。
    s1 += 1;         对于“+=”操作符,它会自动将所执行的计算结果转换成其操作符左边变量的类型。
      

  7.   

    short s = 1; 
    s = s + (short)1;
    谁能详细解释下这个?
      

  8.   


    short ,char,byte类型的数值在做四则运算时,都要转成int类型来运算的。结果也是int类型的。+=,++之类的运算是复合赋值运算,可以看成同类型的赋值,所以不会出错。
      

  9.   

    jvm最小运算单位是int,int以下不能直接用运算表达式,结果要转型,自加自减除外喵。
      

  10.   

    s+=1会自定类型转换
    相当于s=(short)(s+1)
      

  11.   


    另外,两个 short (byte, char, int) 无论进行什么运算结果都是 int,其中需要特别注意的是,short << int, short >> int, short >>> int 结果也都是 int。