Java 如何使用“使循环无限”;x<;=y&&;x>;=y&&;x!=“是吗?”;?

Java 如何使用“使循环无限”;x<;=y&&;x>;=y&&;x!=“是吗?”;?,java,Java,几年前我就有过这个面试问题,但我还没有找到答案 x和y应该是什么来构成一个无限循环 while (x <= y&& x >= y && x != y) { } while(x=y&&x!=y){ } 我们尝试了Nan,infinity+/-,null floatvsint您需要两个可比较、值相同但代表不同实例的变量,例如: Integer x = new Integer(0); Integer y = new Integer(0); Integ

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

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

while (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);
Integer x = new Integer(2);
Integer y = new Integer(2);

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

Integer x = new Integer(0);
Integer y = new Integer(0);
Integer x = new Integer(2);
Integer y = new Integer(2);
因为
x
y
是对象,没有顺序类型,所以会得到一个无限循环。

就是这样

Integer x =1;
Integer y = new Integer(1);
while(x <= y&& x >= y && x != y) {
    System.out.println("Success");
}
整数x=1;
整数y=新整数(1);
while(x=y&&x!=y){
System.out.println(“成功”);
}

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

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

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

x和y的类型是什么。它们是原语还是引用类型,或者它们可以是任何类型?您需要两个相同数量的实例。只要
x在数字上等于y,那么
=
就会相互抵消,但是
x==y
是一个参考检查,因此两个实例将在
x上返回true=y
即使价值相等。YAUIQ-又是一个无用的面试问题。有趣,甚至有趣,我不反对把它放在这里娱乐,甚至学习。但我不认为这有助于任何人评估被面试者将成为多么优秀的程序员员工。@rcook Ya击败了我:)当然。。。与
=
相比。。。这只是原始包装(不包括布尔值)。这是拳击中的一些邪恶的诡计。回答得好。阅读本文的人还应该尝试
Integer.valueOf(0)
,看看这会如何影响结果。@yshavit in
Integer x=1;整数y=1
x
y
是相同的(缓存)实例。使用
new
创建整数时,每次都会返回一个新实例。@如果是,我应该说“
integer.valueOf
或autoboxing”,并且我应该在
new integer
的第一个实例上打勾。要点是:不要评论,所以早上第一件事就是在iPad上发布帖子@极客:如果要装箱的值p为true、false、一个字节或\u0000到\u007f范围内的字符,或者一个介于-128和127(包括-128和127)之间的整数或短数,则让r1和r2为p的任意两个装箱转换的结果。r1==r2总是这样给定的JVM可以更进一步,缓存更多,但不需要这样做。实际上,缓存双精度并没有多大意义:
127d
的使用频率可能比say
0.123d
要低得多。而1-127(int)是相当常见的(ASCII)…本可以多走一步,声明
y=new Integer(x)