因为字面量 1 是 int 类型,它比 short 类型精度要高,因此不能隐式地将 int 类型向下转型为 short 类型。

    1. short s1 = 1;
    2. // s1 = s1 + 1;

    但是使用 += 或者 ++ 运算符会执行隐式类型转换。

    1. s1 += 1;
    2. s1++;

    上面的语句相当于将 s1 + 1 的计算结果进行了向下转型:

    1. s1 = (short) (s1+1);