Java中的自增你真的懂吗?

本文深入探讨了Java中的自增/自减运算符的工作原理,包括后++和前++的区别,并通过实例解释了它们在代码执行顺序上的差异。此外,还分析了i++、i=i+1和i+=1三种方式的效率,并指出在效率方面i++优于i=i+1,i=i+1优于i+=1。文章最后通过实例展示了自增/自减运算与字符串拼接可能导致的意外结果,提醒开发者需要注意潜在的错误。
摘要由CSDN通过智能技术生成

一.解读自增/自减

我们都知道了自增/自减的用法,我们来深度剖析一下

1.后++
int i = 1;
i = i++;
System.out.println(i); //1
/* 我们知道了结果,只是知其然,我们来解读一下
 * 1)我们先把后面的i(i++中的i)装进空间: temp = i;
 * 2)在单独对后面的i进行++操作: i = i + 1;
 * 3)我们在把空间中的值给前面的i: i = temp;
 * 操作完后i的值为1,不是2,应该知道是为什么了吧
2.前++
int j=1;
j = ++j;
System.out.println(j); //2
/* 一样的我们来解读一下
 * 1)我们单独先对后面的j进行++操作: j = j + 1;
 * 2)在把后面的j装进空间内: temp = j;
 * 3)在把空间中的值给前面的j: j = temp;
 * 操作完后j的值为2,而不是1.
3.效率问题
int i = 0;
i++;  
i += 1;  
i = i + 1;
/* 我们来解读一下这三种+1的方式哪种效率更高
 * i++ >>> 1)获取i的地址 2)0000 0000 转化为 0000 0001
 * i = i+1; >>> 1)获取i的地址 2)+1 3)赋值给左边的变量
 * i += 1; >>> 1)获取i的地址 2)+1
 */

// 我们可以看到,在效率方便: i++ > i = i+1 > i += 1

二.自增/自减的运算和拼接

这个可能你会,但是你有的时候就会出错哈哈哈,不信我们看看:

int j=0,k = 0; 
System.out.println(j + k++); //这里是0应该没问题吧
System.out.println(""+ j +++k); //猜猜这个结果是啥?
/* 1.执行顺序是从左到右的,字符串和整型运算是做拼接操作,
 * 所以"" + j 为字符串的0
 * 2.一样,第二个加号也为拼接"+" , +++运算参考上面的情况1
 * 此时 k=0 "0"连接上0 == "00"
 * 所以结果为 00 (字符串的)
 */

是不是一不注意就会出错?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zou-jvm

码字不易,可怜可怜作者吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值