如何使用“x = y && x!= y”使循环无限?
几年前我有这个面试问题,但我还没有找到答案。
什么应该是x和y来进行无限循环?
while (x = y && x != y) { }
我们尝试使用Nan
, infinity+/-
, null
float
vs int
。
您需要两个可比较的变量,具有相同的值,但代表不同的实例,例如:
Integer x = new Integer(0); Integer y = new Integer(0);
x <= y
和y <= x
都为真,因为Integer
是未装箱的,但实例等式x == y
为假。
请注意,它也适用于Float
, Long
和Double
,并且任何值(不仅仅是0)都有效。
您还可以使用JVM的复杂性 - 它们通常只缓存127个整数,所以这也可以工作:
Integer x = 128; Integer y = 128;
(但它不会与127)。
或者更简单,因为Double
s通常根本没有缓存:
Double x = 0d; Double y = 0d;
你必须创建两个整数对象,例如:
Integer x = new Integer(2); Integer y = new Integer(2);
因为x
和y
是对象而没有序数类型,所以会得到无限循环。
你得到了答案,我只想说我是如何达到同一个答案的。 在正常的世界中,这样的测试将毫无用处,因此两个数字无法像这样工作。 所以这意味着它必须是一些特定的java。
x和y可以是简单的类型 – 这使得它立即变得不可能。
x和y可以是对象。 但是哪些对象与<=或> =?进行比较? 只有’盒装’号码。 因此答案非常快。
这里是。
Integer x =1; Integer y = new Integer(1); while(x <= y&& x >= y && x != y) { System.out.println("Success"); }
- 渲染期间引发exception:RelativeLayout中不存在循环依赖关系exception详细信息记录在窗口>显示视图>错误日志中
- Android Studio:com.android.ide.common.process.ProcessException:
- 为什么选择java Instance初始化器?
- Android和Java中的RSA加密
- BitmapFactory无法解码流:Android中的java.io.FileNotFoundException
- edittext visible意味着我如何检查android中的if条件
- 在Java中获取系统的MAC地址
- 位图OutOfMemoryError
- Android – 连接MySQL数据库