Java 不同的循环增量值

Java 不同的循环增量值,java,iteration,increment,Java,Iteration,Increment,我最近摆弄了一些for循环,并试图让我的头脑了解其中的一些逻辑部分。虽然我在这一点上远远超出了循环的层次,但有时在逻辑上我还是会变得有点奇怪 但是,我发现for循环的增量值是不同的,这取决于您是在循环内部还是外部: int i; for(i = 0; i < 10; i++) { System.out.println(i); // 0 ... 9 } System.out.println(i); // 10 for(int i = 0; i < 10; i++) 现在,我

我最近摆弄了一些for循环,并试图让我的头脑了解其中的一些逻辑部分。虽然我在这一点上远远超出了循环的层次,但有时在逻辑上我还是会变得有点奇怪

但是,我发现for循环的增量值是不同的,这取决于您是在循环内部还是外部:

int i;
for(i = 0; i < 10; i++) {
   System.out.println(i); // 0 ... 9
}

System.out.println(i); // 10
for(int i = 0; i < 10; i++)
现在,我担心有一天我将不得不使用计数器来做一些事情,而不仅仅是根据条件来匹配它

现在我想我明白了为什么会这样;在条件失败和循环终止后,i被递增,但这真的应该发生吗


有没有什么数学/逻辑或优雅的方法可以在循环终止后不使其变为N+1,我在这里遗漏了这一点?

这就是for循环的工作原理:

检查条件,如果保持,则转到2,否则终止; 跑体; 执行修改,转到1。 所以一句话,你不能


此外,如果变量没有转到N+1,循环如何终止?在这种情况下,循环条件始终保持不变,因此它将永远运行。

for循环就是这样工作的:

检查条件,如果保持,则转到2,否则终止; 跑体; 执行修改,转到1。 所以一句话,你不能


此外,如果变量没有转到N+1,循环如何终止?在这种情况下,循环条件始终保持不变,因此它将永远运行。

由于增量发生在检查之后,因此在循环中:

int i;
for(i = 0; i < 10; i++) {
   System.out.println(i); // 0 ... 9
}

System.out.println(i); // 10
for(int i = 0; i < 10; i++)
当9<10时,i递增,9被打印,而我现在有10


因此,System.out.printlni;给出10作为答案。

由于增量发生在检查之后,因此在循环中:

int i;
for(i = 0; i < 10; i++) {
   System.out.println(i); // 0 ... 9
}

System.out.println(i); // 10
for(int i = 0; i < 10; i++)
当9<10时,i递增,9被打印,而我现在有10


因此,System.out.printlni;答案是10。

@Volatile这其实是个不错的问题;理解这一点可以避免相当多的错误,包括一些一个接一个的错误。@Volatile这其实不是一个坏问题;理解这一点可以避免相当多的错误,包括一些一个接一个的错误。