我看到一个奇怪的问题。我有一个对象,它有几个实例变量,其中一个是数字。这个对象来自使用ObjectInputStream的readObject()的套接字,所以它应该已经被反序列化。但是,当我将它与具有与该字段完全相同的数字的另一个对象(使用==)进行比较时,它不匹配。注意:我不使用getter比较对象,只是整数实例变量。在比较之前打印报表,显示它们完全相同。Java:等号不匹配
System.out.println("New book id:"+newBook.getId());
for (Book p: listOfBooks) {
System.out.println("CurrentBook's id:"+p.getId());
if (newBook.getId() == p.getId()) {
System.out.println("Matched CurrentBook's id:"+p.getId())
}
}
感谢特德霍普,是的,我想行为是不一致的整数与==比较。我意识到这些字段是整数,而不是整数,并且它以前工作过,所以非常困惑为什么它不再有效。
请提供代码,以便我们可以诊断之前提取的原始值(
int
,long
等)。没有什么可以离开这里 – torquestomp 2013-04-23 00:43:07'=='只是比较对象的引用和其他。你需要实现一个'obj1.equals(obj2)'方法来比较内部数据。 – Supericy 2013-04-23 00:43:41
这可能是你的问题吗? http://stackoverflow.com/questions/10149959/using-operator-in-java-to-compare-wrapper-objects – sarahTheButterFly 2013-04-23 00:54:59