java中i++和++i和i=i+1的原理及区别

在java(或c语言,这里以java为主)里面,i++和++i对于初学者来说,一直是一个特别容易搞混的内容,特别是那种 i=i++ 或 i=++i 这种求 i 的值。

不过今天不用怕,看完这篇文章,相信你一定能搞清楚这俩个的区别!

基本概念

i++和++i的作用都是自增加一,但是两者的返回结果却不一样的。为什么呢?这主要得益于 java的中间缓存机制

快速区分

i++

返回值是 i 的初始值,但i本身是变化了的。

原理:先把初始的 i 的值存入临时缓冲区,对栈中的 i 进行加1操作,操作完毕后,出栈,但是最后返回的是临时变量区里面的值(原来初始 i 值)。jvm把它当作2个不同的变量了。

i=i++ 等效于

tmp=i;

i=i+1;

i=tmp

++i

返回值是 i+1的值,i本身是不变的。

原理:与i++相反,jvm将i值拷贝,将复制体(拷贝的i值)入栈操作加1,然后出栈,返回出栈的值。原始 i 不变。

i=++i 等效于

tmp=i;

tmp=tmp+1;

i=tmp

总结

所以,i=i+1i=i++ 是不一样的!!!而i=++i 则是等效于 i=i+1 的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值