如何使用“ x <= y && x> = y && x!= y”使循环无限?
问题内容:
几年前我有这个面试问题,但是我还没有找到答案。
做无限循环的x和y应该是什么?
while (x <= y&& x >= y && x != y) {
}
我们试着用Nan
,infinity+/-
,null
float
VS int
。
问题答案:
您需要两个可比较,具有相同值但代表不同实例的变量,例如:
Integer x = new Integer(0);
Integer y = new Integer(0);
x <= y
和y <= x
都为true,因为Integer
取消了装箱,但是实例相等性x == y
为false。
请注意,它也可以与一起使用Float
,Long
并且Double
任何值(不仅是0)都可以使用。
您还可以使用JVM的复杂性-它们通常仅缓存最多127个整数,因此也可以使用:
Integer x = 128;
Integer y = 128;
(但是127不会)。
或更简单地说,由于Double
s通常根本不会被缓存:
Double x = 0d;
Double y = 0d;