为什么这些打印不同的输出?

时间:2019-10-18 16:22:05

标签: java for-loop

我只想了解for(int i =1;i<4;i++)之间的区别 和for(int i =1;i++<4;)
第一个打印123
第二个打印234

for(int i =1;i<4;i++)
    System.out.print(i);

for (int i =1;i++<4;)
    System.out.print(i);

我不明白为什么结果会有所不同,我希望两者都得出123。

3 个答案:

答案 0 :(得分:1)

此循环:

for (int i =1;i++<4;)

i之前增加System.out.print(i),这意味着i的第一个打印值将为2。

答案 1 :(得分:0)

在标准for循环中,i在循环迭代后 递增。来自Java Tutorials

  

在每次循环迭代之后调用增量表达式;该表达式增加或减少值是完全可以接受的。

在第二个示例中,它在要求值的表达式中递增,但是由于使用了后递增运算符,所以求值是旧值。这意味着到打印时,它已经增加了。

答案 2 :(得分:0)

为说明起见,我仅使用花括号来重构语句...

for(int i =1;i<4;i++) {
        System.out.print(i);
    }
System.out.println();
for (int i =1;i++<4;) {
        System.out.print(i);
    }
System.out.println();

在第一个“ for”语句中-具有“ i ++”的第三个子句在执行循环内容之前不会发生。
接下来,考虑第二个“ for”语句,即比较子句(第二子句)。将在循环内容开始之前 进行完全评估。因此,进入第一次迭代时,出于比较的目的,“ i ++”被评估为“ 1”,但在评估布尔子句后立即被递增。
所以当它到达打印语句时,它已经等于2。(依此类推)
希望对您有所帮助!