Porównanie obiektów całkowitych [duplikat]
To pytanie ma już odpowiedź tutaj:
Jak właściwie porównać dwie liczby całkowite w Javie? 8 odpowiedziMam następujący kod:
public class Test {
public static void main(String[] args) {
Integer alpha = new Integer(1);
Integer foo = new Integer(1);
if(alpha == foo) {
System.out.println("1. true");
}
if(alpha.equals(foo)) {
System.out.println("2. true");
}
}
}
Dane wyjściowe są następujące:
2. true
Jednak zmiana typuInteger object
doint
wygeneruje inny wynik, na przykład:
public class Test {
public static void main(String[] args) {
Integer alpha = new Integer(1);
int foo = 1;
if(alpha == foo) {
System.out.println("1. true");
}
if(alpha.equals(foo)) {
System.out.println("2. true");
}
}
}
Nowa wydajność:
1. true
2. true
Jak to może być? Dlaczego pierwszy przykładowy kod nie wyświetla1. true
?