我试图理解以下代码在Java中使用数值比较运算符比较2个整数对象时的行为。
Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
System.out.println(i1 == i2);
System.out.println(i1 > i2);
System.out.println(i1 >= i2);
false
false
true
因为<
、、
>=
和<=
是数值比较,因此,编译器知道它必须执行取消装箱操作。
但是,==
和!=
始终用作非基元类型的引用比较器。
问题内容: 我正在阅读Kathy Sierra和Bert Bates编写的SCJP Java 6,这本书让我非常困惑。在第245页上,他们声明以下代码。 然后在下一页上,它们具有以下代码 我很困惑!当我自己尝试该方法时,似乎无法使用==来比较使用equals()方法的方式。即使Integer变量设置为相同的值(即10),使用==总是给我’false’。我对么?使用==比较相同的Integer对象(
问题内容: 我建立了一个领域的课程。然后,我创建了两个对象,我也必须使用运算符对其进行比较。这是我所做的: 问题答案: 比较对象引用,它检查两个操作数是否指向同一对象(不是等效对象,是同一对象)。 如果要比较字符串(以查看它们是否包含相同的字符),则需要使用来比较字符串。 在你的情况下,如果字符串匹配,则确实将两个居中实例视为相等,则: …但是通常,如果你要定义一个类,那么等效性要比单个字段的等效
我有一个检查两个变量引用的代码,我遇到了这个有点混乱的情况: 结果是: 我的第一个问题是为什么第一个和第三个引用相等?如果第三个变量等于第二个变量,它应该是,因为它们的对象引用不相等。 当我将值更改为时,我感到困惑,如下所示: 然后结果变成: 为什么会这样?
我用一个字段构造了一个类。然后创建了两个对象,并且必须使用运算符和对它们进行比较。以下是我所做的:
问题内容: 仅仅花了几个小时调试以下代码: 上面产生了一个NullPointerException。以下代码没有: 唯一的区别是用Integer.valueOf()包装-1。我敢肯定,一旦有人解释了为什么这段代码的行为方式如此,我就会打我的额头。但是有人可以向我解释为什么这段代码的行为方式:)吗? -编辑 再次考虑,我怀疑NPE来自返回null的rsrqs.get(),我认为Java在将其装箱回I