java中 i != j 什么意思_java中 i = i++和 j = i++ 的区别

java中 i = i++和 j = i++ 的区别

ab7653affab982b574eb7acc55df2e04.gif

由于 i++ 和 i-- 的使用会导致值的改变,所以在处理后置的 ++ 和 -- 的时候,java 的编译器会重新为变量分配一块新的内存空间,用来存放原来的值,

而完成赋值运算之后,这块内存会被释放。

(1)对于 j= i++ 的情况

ab7653affab982b574eb7acc55df2e04.gif

i 的原始值存放在后开辟的内存中,最后将这个值赋给 j,进行 j = i++ 运算之后,j 会得到 i 的值,而 i 又将自加,所以,在释放内存之后,原来存放 j 和 i 的地方将得到的值分别是:j(此时的值等于初始 i 的值)和 i(i 自加后的值)。publicstaticvoidmain(Stringargs[])

{

intj=0;

intk=0;

for(inti=0;i<100;i++)

{

j=k++;

}

System.out.println(j);

}

运行结果是 99。接下来对其进行分析:

ab7653affab982b574eb7acc55df2e04.gif

每一次的循环结束,用来保存 i 的原始值的内存的数据会被销毁,然后 i 的新的值又会被放在一段新的内存中,在进行上述的循环,所以最终能够实现 j 的数据的增加。

(2)对于 i = i++ 的情况

ab7653affab982b574eb7acc55df2e04.gif

总结:

Java 编译器每次遇到自增(指的是 i++)、自减(指的是 i--)运算符的时候都会开辟一块新的内存空间来保存赋值之前 j 的值,即为缓存变量,然后再将这个换成变量的值赋给左边的变量。

扩展:

微软的 windows 下的 visualstudio 编译的结果和 java 不同,但在 gcc 等其他的 c 语言编译器下,结果和 java 是一样的,千万要注意,由于有些人使用的是 c 语言的编译器但不是 windows 下的编译器,结果仍然和 java 的一致,但在 windows 下的编译运行结果却不一样,希望能引起读者的注意。

ab7653affab982b574eb7acc55df2e04.gif

来源: http://www.bubuko.com/infodetail-1971708.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值