Java中i=i++,结果不变

  • 代码:
 class Demo {
	public static void main(String[] args) {
		int i = 0;
		i = i++;
		System.out.println("i的值是 : " + i);
}

根据我们通常所知道的后自增先使用后增加的道理 , i++ 在使用后i自身会增加一个数值 , 初始值为 0 时 , 自增后就是 1 , 那么输出的结果应该是1 , 但实际上这题的结果却是 0

这是因为 JVM 在处理 i = i++; 时 , 会建立一个临时变量来接收 i++ 的值 , 然后返回这个临时变量的值 , 返回的值再被等号左边的变量接收了 , 这样就是说 i 虽然自增了但是又被赋值了0 , 这样输出的结果自然就是 0 了

  • 不妨我们用 temp 临时变量来接收 i++ 的值 , 来看一下结果 :
int i = 0;
int temp = i++;
System.out.println("temp的值是 : " + temp);

temp的值是 : 0

可以看到 temp 的结果就是 0 , 也就是说赋值号右边传递过来的是 i 未自增前的值 , 这符合后自增运算符先使用后增加的原则 , 这时候我们再输出一下 i 的值 :

int i = 0;
int temp = i++;
System.out.println("temp的值是 : " + temp);
System.out.println("i的值是 : " + i);

temp的值是 : 0
i的值是 : 1

i 也的确自增了一个值 , 这样就好理解为什么 i = i++; 中输出第一个 i 为什么是 0 了 , 因为 i 在自增后又被等式右边的值覆盖了 , 也就是说第一个的i的值发生了三次变化 , 第一次是我们定义 i = 0; 第二次就是 i 自增后变成了 1 , 第三次就是 i 又被 0 值覆盖了

转载来源:https://blog.csdn.net/tojohnonly/article/details/87877397

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值