czemu ?
Integer a = 100, b = 100, c = 200, d = 200;
System.out.println(c==d);//false?
System.out.println(a==b);//true?
spróbuj z intem bez opakowania ;)
@furious programming Po co kalkulatorowi porównywanie intów :P ? A operacje na liczbach pewnie realizuje się na jakimś dokładnym typie ułamkowym.
@Shalom wyjaśnił OP na czym rzecz polega – nie odniósł się do mojego komentarza, bo pisał wcześniej. ;)
@masjav: jeśli masz opory przed używaniem Integer.equals - bo np. nie wiesz czy nie będzie nullem albo nie pasuje Ci zapis a.equals(b) - możesz użyć Objects.equals. Zaleta? Działa z Integer(100), Integer(200), int, null:
Integer a = 100, b = 100, c = 200, d = 200;
int e = 100, f = 200;
System.out.println(Objects.equals(c, d)); // true
System.out.println(Objects.equals(a, b)); // true
System.out.println(Objects.equals(a, e)); // true
System.out.println(Objects.equals(c, f)); // true
ShalomBo Integer ma taki niby cache w sobie dla wartości -128 do 127, więc
valueOf()
dla małych wartości zwraca tego samego Integera. Nie należy na tym polegać i nie należy porównywać obiektów przez ==. Popatrz sobie na źródła klasy Integer, masz tam w środku klasę IntegerCache.