How to make loop infinite with “x <= y && x >= y && x != y”?

前端 未结 4 817
南方客
南方客 2020-12-16 11:07

I had this interview question some years ago but I haven\'t found the answer yet.

What should be x and y to make a infinite loop?

while (x <= y&am         


        
4条回答
  •  执念已碎
    2020-12-16 11:55

    You need two variables which are comparable, have the same value, but represent different instances, for example:

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

    x <= y and y <= x are both true because the Integer are unboxed, however the instance equality x == y is false.

    Note that it works with Float, Long and Double too, and any value (not just 0) works.


    You can also play with the intricacies of your JVM - they generally cache integer up to 127 only, so this would work too:

    Integer x = 128;
    Integer y = 128;
    

    (but it would not with 127).

    Or more simply, since Doubles are generally not cached at all:

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

提交回复
热议问题