当使用后增量时,for循环导致无限循环

时间:2017-03-16 15:15:35

标签: java for-loop post-increment

我是java的新手。想要帮助分析下面的一小部分代码。下面的代码将'i'的值始终打印为0。似乎'我'永远不会增加,而下面的循环结果是无限循环。有人可以解释为什么'我'根本没有增加?我知道当使用后增量运算符时,首先使用表达式值,然后增加值。因此,循环的第一次迭代将'i'的值打印为0.但是,至少在第二次迭代中,'i'应该增加到1,依此类推。右:

public class PostIncExample {

    public static void main(String[] args) {
        for(int i=0; i<10;){
            System.out.println(i);
            i=i++;
            System.out.println("hi" + i);
        }

    }

}

2 个答案:

答案 0 :(得分:2)

在您的代码中,i++会返回&#34; old&#34;值i(递增前的值)。然后将此旧值分配给i。因此,在i = i++之后,i具有与之前相同的值。

答案 1 :(得分:1)

++i increments and then uses the variable.
i++ uses and then increments the variable.
  

这就是为什么上面的代码总是打印0并且变为无限

您可以按以下方式修改代码:

public class PostIncExample {
    public static void main(String[] args) {
        for(int i=0; i<10;){
            System.out.println(i);
            i=++i;
            System.out.println("hi" + i);
        }
    }
}
  

当您想要使用递增的值时,使用PRE-increment   该表达式中的变量。

     

POST-increment使用   增加之前的原始值。