Używanie operatora == w Javie do porównywania obiektów opakowujących
Czytam SCJP Java 6 autorstwa Kathy Sierra, a Bert Bates i ta książka bardzo mnie myli. Na stronie 245 podają poniższy kod.
<code>Integer i1 = 1000; Integer i2 = 1000; if(i1 != i2) System.out.println("different objects"); //Prints output different objects </code>
Następnie na następnej stronie mają następujący kod
<code>Integer i3 = 10; Integer i4 = 10; if(i3 == i4) System.out.println("same objects"); //Prints output same objects </code>
Jestem zmieszany! Kiedy sam to wypróbuję, wydaje się, że nie można użyć == do porównania w taki sam sposób, w jaki używa się metody equals (). Użycie == zawsze daje mi „fałsz”, nawet jeśli zmienne całkowite mają tę samą wartość (tj. 10). Mam rację? Użycie == do porównania tego samego obiektu Integer (z tymi samymi wartościami) zawsze spowoduje „fałsz”