我看到一個奇怪的問題。我有一個對象,它有幾個實例變量,其中一個是數字。這個對象來自使用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