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 编译器会对它进行特殊处理,因此可以正确编译。
对于 short s1 = 1; s1 = s1 + 1; 来说,在 s1 + 1 运算时会自动提升表达式的类型为 int ,那么将 int 型值赋值给 short 型变量,s1 会出现类型转换错误。
对于 short s1 = 1; s1 += 1; 来说,+= 是 Java 语言规定的运算符,Java 编译器会对它进行特殊处理,因此可以正确编译。
评论(4)
Java类型转换低到高自动转型,高到低要显示强转
对于short/byte/char这三种数据类型,右边的数值没有超过左边的类型范围并且右边是全常量,那么编译器会自动进行强制类型转换。因此short s1 = 1;这条语句是没有错误的。
至于s1 += 1;不报错是因为复合赋值运算符+=里面隐含强制类型转换。
想给你点个赞,奈何没有点赞功能
给他提单