Java for 循环的变量是什么时候增长的?

博客探讨了一个看似会结束但实际上为死循环的Java for循环问题。循环条件`for(int n=-1; n!=0; n++)`中,由于字节码的iinc指令使得自增操作在循环体执行后进行,导致n的值始终无法达到终止条件,从而形成无限循环。文章通过字节码分析揭示了这个问题,并提醒开发者注意此类陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个 for 循环的问题

for (int n = -1; n != 0; n++) {
	n = 0;
}

那么问题来了:

  1. 这个循环的执行情况如何?会结束吗?
  2. 由此引出另一个问题,n++ 是在什么时候执行的?

分析

咋一看,这个循环会结束,但其实这个死循环会一直执行下去。通过 jclasslib 来看看字节码信息:
在这里插入图片描述重点是下面这句:

iinc 1 by 1 # Increment local variable by constant

也就是说,自增长语句是在循环体完成后才执行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值