Witam. Operator == w Javie służy do referencji. Więc mam pytanie czemu poniższy kod daje wartość true?
public class Glowna {
public static void main(String[] args) {
int a = 0;
int b = 0;
b = 10;
a = 10;
if (a == b) {
System.out.println("Rowne");
} else
System.out.println("Nie rowne");
}
}
Czyżby zmienna a i b otrzymywały to samo miejsce w pamięci. Wcześniej szukałem czegoś podobnego na temat Stringów w Javie i wyczytałem, że przy inicjalizacji zmienneych w następujący sposób
String a = "ABCD";
String b = "ABCD";
Porównanie ich za pomocą == da wynik true, ponieważ przy takiej inicjalizacji kompilator korzysta z jakiejś puli referencji? A w przypadku gdy byśmy zadeklarowali zmienną w taki sposób String b = new String("ABCD"); da nam wynik false. Przetestowałem to i faktycznie tak to działa na obiektach. I tutaj moje pytanie jak jest w przypadku zwykłych zmiennych jak int, double itp. Czy jeśli dajemy np. takie same wartości a = 10 i b = 10 to zmienna b otrzymuje to samo miejsce w pamięci co a ponieważ ma taką samą wartość i kompilator korzysta z tej tzw. puli referencji?