Java中的扩展运算符盲区

首先看一段代码:

public static void main(String[] args) {
    byte num = 1;
    num = num + 1;
    num += 1;
    System.out.println(num);
}

我们一般都认为 num = num + 1 和 num += 1 这两条语句是等价的,后者是前者的简写。
对于加法操作, num + 1 的结果是int类型的,因此num = num + 1这句话在编译过程中,编译器会提示错误“type mismatch: cannot convert from int to byte”。同理,对于num += 1,编译器也应该提示相同的错误。

但是在实际编译时,发现只有第一个运算会报错,而num+=1可以通过编译,说明 += 运算符不仅仅等同于 num = num + 1,而应该等价于
num = (num的数据类型)(num + 1)。

在 += 运算符中,实际隐含了一个强制类型转换的操作。

阅读更多
版权声明:本文为博主原创文章,随便转载!注明出处即可! https://blog.csdn.net/liuweiballack/article/details/46821331
个人分类: Java学习
上一篇Java字符参与运算和字符串参与运算
下一篇Java中交换两个int类型变量的方法汇总
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭