如何使用“ x <= y && x> = y && x!= y”使循环无限?


问题内容

几年前我有这个面试问题,但是我还没有找到答案。

做无限循环的x和y应该是什么?

while (x <= y&& x >= y && x != y) {

}

我们试着用Naninfinity+/-null

floatVS int


问题答案:

您需要两个可比较,具有相同值但代表不同实例的变量,例如:

Integer x = new Integer(0);
Integer y = new Integer(0);

x <= yy <= x都为true,因为Integer取消了装箱,但是实例相等性x == y为false。

请注意,它也可以与一起使用FloatLong并且Double任何值(不仅是0)都可以使用。


您还可以使用JVM的复杂性-它们通常仅缓存最多127个整数,因此也可以使用:

Integer x = 128;
Integer y = 128;

(但是127不会)。

或更简单地说,由于Doubles通常根本不会被缓存:

Double x = 0d;
Double y = 0d;