short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) 
short s1 = 1; s1 += 1;(可以正确编译)

解决方案 »

  1.   

    由于1默认是int类型的数据,所以在计算s1+1的时候,java会自动把计算结果转为精度比较大的类型,这里计算结果也就是int
    就相当于 s1 = 2;这个时候2是int类型,所以会有错误,因为会丢失精度,要把2强制转化为int才行。而 s1 +=1 中"+="这个运算符解析的时候是有一个固定模型的,就是会按照这样的公式解析 
    (n的类型)n += (n1的类型)n1  =>  (n的类型)n = (n的类型)(n+n1) 由于解析后自动进行了强制类型转换,所以是不会有问题的。
      

  2.   


    1,2...3,系统默认是INT型的.3.26默认是DOUBLE型.知道这个就不能理解了.