有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

x和y应该是什么来构成一个无限循环

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

}

我们尝试了Naninfinity+/-null

floatvsint


共 (4) 个答案

  1. # 1 楼答案

    你已经得到了答案,我只是想说我是如何得到同样的答案的。 在正常情况下,这样的测试是无用的,两个数字不可能这样工作。这意味着它必须是特定于java的

    x和y可以是两种简单的类型——这使得它不可能马上实现

    x和y可以是对象。但与什么对象相比<;=或者>;=?只有“盒装”数字。 因此答案很快就出来了

  2. # 2 楼答案

    给你

    Integer x =1;
    Integer y = new Integer(1);
    while(x <= y&& x >= y && x != y) {
        System.out.println("Success");
    }
    
  3. # 3 楼答案

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

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

    x <= yy <= x都是真的,因为Integer是非固定的,但是实例等式x == y是假的

    请注意,它也与FloatLongDouble一起工作,任何值(不仅仅是0)都可以工作


    您还可以利用JVM的复杂性——它们通常只缓存127个整数,所以这也可以:

    Integer x = 128;
    Integer y = 128;
    

    (但对127来说不会)

    或者更简单地说,由于Double通常根本不缓存:

    Double x = 0d;
    Double y = 0d;
    
  4. # 4 楼答案

    必须创建两个整数对象,例如:

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

    因为xy是对象,没有顺序类型,所以会得到一个无限循环