Java for循环里i++位置改变的影响

本文通过两个示例探讨了Java中for循环内continue语句的使用方式及其对循环变量i自增操作的影响。第一个例子展示了当i++放在循环体内时,continue不影响i的递增。第二个例子则说明,如果将i++放在if语句之后,则可能导致循环陷入无限循环状态。

有下面这样一段Java代码:

		for (int i = 0; i < 3;i++) {
			System.out.println(i);
			if (i == 1) {
				continue;
			}
		}

运行结果是:

0

1

2

可见,i++在continue之后执行了。如果我们把i++从括号里移到if条件句的后面呢?

		for (int i = 0; i < 3;) {
			System.out.println(i);
			if (i == 1) {
				continue;
			}
			i++;
		}
运行结果是:

0

1

1

......

可见,i++并没有执行。

可见,i++在括号里和括号外位置不同对程序执行的结果是有影响的。

### Java 中 `i++` 和 `++i` 的区别及用法 在 Java 编程语言中,存在两种不同形式的增量运算符:前缀 (`++i`) 和后缀 (`i++`)。这两种操作符虽然都用于增加变量的值,但在具体行为上有所差异。 #### 后缀增量运算符 `i++` 当使用后缀增量运算符时,在表达式的当前上下文中返回的是未更新之前的原始值;而该语句执行完毕之后才会使目标变量加一。这意味着如果在一个循环条件判断应用此操作,则测试阶段采用旧数值参与比较逻辑计算[^1]。 ```java int i = 0; System.out.println(i++); // 输出 0 // 此处 i 已经变为 1 ``` #### 前缀增量运算符 `++i` 相比之下,前缀版本会在任何进一步处理之前立即修改并获取最新的值。因此对于同样的场景下,它会先让指定对象自增再继续后续流程中的其他部分工作,所以在控制结构如for循环内作为终止条件的一部分时尤为有用。 ```java int j = 0; System.out.println(++j); // 输出 1 // 这的 j 是 1 ``` #### 在循环中的实际运用案例 为了更直观地展示两者之间的差别,下面通过具体的例子来说明如何在不同的编程环境中选用合适的形式: ##### 使用后缀增量的情况 ```java public class PostfixExample { public static void main(String[] args) { for(int k=0; k<5; System.out.print(k++ + " ")) ; // 输出: 0 1 2 3 4 } } ``` 在这个实例面,由于每次迭代结束才去改变计数器k的状态,所以打印出来的序列是从零开始直到四为止的一系列整数。 ##### 应用前缀增量的情形 ```java public class PrefixExample { public static void main(String[] args) { for(int m=-1; ++m<5; ) System.out.print(m + " "); // 输出: 0 1 2 3 4 } } ``` 这展示了另一种方式实现相同的输出效果——利用前置递增特性使得初始状态被调整到满足进入主体范围内的第一个合法位置(-1变成0),从而达到预期目的。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值