Witam. Czy mógłby mi ktoś wytłumaczyć co właściwie się dzieje jeśli porównywany jest typ referencyjny z typem podstawowym?
Rozumiem, że jeśli porównujemy obiekt z obiektem to porównywana jest referencja tych obiektów chyba, że używamy metody equals() która jeśli jest przesłonięta to porównuje zawartość obiektów.
Rozumiem także działanie operatorów relacji na typach podstawowych ale co zachodzi w przypadku kiedy porównujemy zmienną typu podstawowego ze zmienną typu referencyjnego?
Co w takiej sytuacji robi kompilator?
int x = 1;
long y = 1;
double z = 1.0;
Integer a = new Integer(1);
Long b = new Long(1);
Double c = new Double(1.0);
System.out.println(x == a); // true
System.out.println(y == b); // true
System.out.println(z == c); // true
System.out.println(x == 1); // true
String s = new String("S");
String s2 = "S";
System.out.println(s == "S"); // false
System.out.println(s2 == "S"); // true
boolean t = true;
Boolean t2 = new Boolean(true);
System.out.println(t == t2); // true