12、short s1 = 1;s1 = s1 + 1;有什么错?那么 short s1 = 1; s1 += 1;呢?有没有错误?

对于 short s1 = 1; s1 = s1 + 1; 来说,在 s1 + 1 运算时会自动提升表达式的类型为 int ,那么将 int 型值赋值给 short 型变量,s1 会出现类型转换错误。

对于 short s1 = 1; s1 += 1; 来说,+= 是 Java 语言规定的运算符,Java 编译器会对它进行特殊处理,因此可以正确编译。

1 评论

  1. 对于short/byte/char这三种数据类型,右边的数值没有超过左边的类型范围并且右边是全常量,那么编译器会自动进行强制类型转换。因此short s1 = 1;这条语句是没有错误的。

    至于s1 += 1;不报错是因为复合赋值运算符+=里面隐含强制类型转换。

发表评论