Java-关于java的+=操作符的问题?

发布于 2017-01-09 17:45:10 字数 88 浏览 1136 评论 2

直到今天我还是不太明白,以前在写java程序时,如下代码:

i += j;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-10-20 08:33:15

这个问题是一个java的类型转换的问题,int转化为long类型原则上会造成数据的丢失,因为这2个长度范围是不同的。

 i+=j;

是先将long转化为int,然后用int进行了操作。写了个简单的例子:

 public static void main(String[] args){
int a=1;
long b=99999999999999998l;
a+=b;
System.out.println("a--->:"+a);
}

输出的结果是:a--->:1569325055
可以证明

晚风撩人 2017-02-23 15:32:21

可以去查找下 数据类型的转换方面的知识 int的扩展转换(就是系统自动的转换,没有精度损失)是long float double 。 缩减转换(程序员自己转换的,有精度损失)是byte short char ,int不能转换成long的类型 但是long能转换成int类型 。
当你写成 i += j等价于先计算i+j,i已经扩展转型long 那么在赋值的时候i就是long类型的
写成i=i+j 等价于先计算右边的i+j,在去赋值左边 但是左边的i是int的类型的 右边的i+j是long类型,所以类型就不匹配了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文