Java中的扩展运算符盲区

原创 2015年07月09日 20:31:49

首先看一段代码:

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)。

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

版权声明:本文为博主原创文章,随便转载!注明出处即可! 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)