几年前我有这个面试问题,但我还没有找到答案.
什么应该是x和y来进行无限循环?
while (x <= y&& x >= y && x != y) {
}
Run Code Online (Sandbox Code Playgroud)
我们试着用Nan,infinity+/-,null
floatVS int.
ass*_*ias 37
您需要两个可比较的变量,具有相同的值,但代表不同的实例,例如:
Integer x = new Integer(0);
Integer y = new Integer(0);
Run Code Online (Sandbox Code Playgroud)
x <= y并且y <= x都是正确的,因为它们Integer是未装箱的,但是实例相等性x == y是假的.
请注意,它与Float,Long并且Double也和任何值(不只是0)的作品.
您还可以使用JVM的复杂性 - 它们通常只缓存最多127个整数,所以这也可以工作:
Integer x = 128;
Integer y = 128;
Run Code Online (Sandbox Code Playgroud)
(但它不会与127).
或者更简单,因为Doubles通常根本不缓存:
Double x = 0d;
Double y = 0d;
Run Code Online (Sandbox Code Playgroud)
你必须创建两个整数对象,例如:
Integer x = new Integer(2);
Integer y = new Integer(2);
Run Code Online (Sandbox Code Playgroud)
因为x并且y是对象而没有序数类型,所以会得到无限循环.
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |