为什么(i <= j && j <= i && i!= j)评估为TRUE?

奎师那Ja那教:

我已经编写了一段无限循环运行的Java代码。

下面是代码:

public class TestProgram {
    public static void main(String[] args){
        Integer i = new Integer(0);
        Integer j = new Integer(0);

        while(i<=j && j<=i && i!=j){
            System.out.println(i);
        }
    }
}

在上面的代码中,虽然看到了while循环中的条件,但起初看起来该程序不会进入while循环中。但是实际上,这是一个无限循环,并不断显示该值。

这是怎么回事

阿桑(Junesan):
  • i <= j被评估true的,因为自动拆箱发生了INT比较,那么这两个ij保持默认值0

  • j <= itrue由于上述原因而被评估为

  • i != j被评估为true,因为ij都是不同的对象。并且在比较对象时,不需要自动拆箱。

所有条件都为真,并且您没有在更改ij处于循环状态,因此它无限运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么执行语句“j= i++ + ++i”后i和j的值为2?

为什么j在(++ i || ++ j)中不增加

在C ++中,为什么要在“ array [i] [j]”上使用“ *(*(array + i)+ j)”?

找出数组中 (i,j) 对的总数,使得 i<j 且 a[i]+a[j]=i+j。

这个 for(i--;i>j;j+=2,i-=j%3) 是什么意思?

为什么Python中的复数用'j'而不是'i'表示?

为什么“ decltype(i + j)”的结果不是右值引用?

为什么++ i ||不 ++ j && ++ k给出期望值

为什么 arr[i][j-1] = 零?

给定索引i,j(j> = i)如何找到子数组(i,j)的A [j]的频率?

嵌套循环的大O(int j = 0; j <i; j ++)

(i ++ && j)的结果是什么?

(arr [i]-arr [j])的最大值,其中i <j

vec [i] [j]转换为*(vec + i + j)吗?

嵌套i,j循环的宏

i == j == k的意外结果?

为什么`j = + i +(i <0?len:0)`中的前导`+`(取自jQuery源代码)

说明可选的PHP For循环语法:for($ i = 1,$ j = 0; $ i <= 10; $ j + = $ i,print $ i,$ i ++);

如果list [j]在list [i]之前,list [i:j]是否保证为空列表?

嵌套循环的大O(int j = 0; j <i * i; ++ j)

为什么熊猫会无声地忽略索引过多的.iloc [i,j]赋值?

为什么将变量“ i”和“ j”用于计数器?

为什么在控制流图中变量“i”和“j”被认为是死的?

为什么我们在i * j之后放置“ To.String”?

为什么输入“i”而不是“j”作为HashMap中的键时输出不同?

根据两个一维向量a,b和a创建一个布尔数组A,如果a [i] == b [j],则A [i,j]为True

如何在Numpy / Theano中表达c [i,j,k] = a [i,j] * b [i,k]?

找出j和i索引之间的最大差,使得在O(n)中j> i和a [j]> a [i]

填充一个NxM矩阵,使得A [i,j] = A [i-1,j] NAND A [i,j-1]