short s1=1;
s1=(short)(s1+1);
System.out.println(s1);对short的变量+ - * / 都是先作int型来计算的,因此要强制转化

解决方案 »

  1.   

    参加java运算的全部都应该是int以上。s1+=1会做自动类型转换。
      

  2.   

    根据各位楼上兄弟的看法,我理解是因为java首先将s1+1这个运算中的s1转换成了int,然后做加法,但是加法的结果无法默认转换成为short,是这样的吗?
      

  3.   

    +运算至少是int型的,所以s1 = s1 + 1 不行。而s1+=1相当于s1=(short)(s1+1);所以能执行
      

  4.   

    你的理解不对,是这样的:
    1、short s1 = 1;说明s1的类型是short。2、s1 + 1;对s1进行+ 、- 、*、 / 运算时,JAVA会自动把结果提升到int型(对byte、char运算都有这种情况)。3、s1 = s1 + 1;你把个int型赋值给一个short行当然编译错误了!!4、s1+=1;这个运算的实际表示应该是s1=(short)(s1+1),就是把s1 + 1的结果强制转换为short型。