Java中的!=运算符

时间:2018-09-11 09:35:35

标签: java loops for-loop

下面的代码如何显示“ J的值为:1000”?
我本以为“ j!= 1000”在所有情况下都将评估为false(因为1000 mod 19不是0),因此使其成为无限循环。

public static void loop2() {
    int j = 0;

    for(int i=0;j != 1000;i++) {
        j = j+19;
    }
    System.out.println("The value of J is: " + j);
}

2 个答案:

答案 0 :(得分:1)

正如Saheb所说,由于整数溢出。

在3842865528迭代之后达到J的值1000

public static void loop2()
{
    int j = 0;
    long iterations = 0;

    for (int i = 0; j != 1000; i++) {
        j = j + 19;
        iterations++;
    }
    System.out.println("The value of J is: " + j + " reached after " + iterations + " iterations");
}

答案 1 :(得分:0)

您将j定义为int。 整数具有定义的范围。有符号整数的最大值为2,147,483,647。一旦超过该值,就会出现位溢出,导致整个事情从最小值开始。如果是整数,则为-2,147,483,648。在循环的某个点上,您会得到一个负的循环起始值,该起始值会导致您的循环降落在981 + 19 = 1000 >>>循环退出,因为J等于您的for循环的退出条件。