Porównywanie stringów

0

Witam, dopiero uczę się javy i chciałbym uzyskać odpowiedź na pytanie, mianowicie

String s1 = "foo";
String s2 = "foo";
System.out.println(s1==s2); //wypisuje true

String s3 = new String("foo");
System.out.println(s1==s3); //wypisuje false

Może mi ktoś wyjaśnić dlaczego dostaje takie wyniki?

0

Wydaje mi się, w I przypadku tworzy się jeden obiekt który jest jakby rozdzielany na dwie oddzielne nazwy które mają swoją wartość. Więc porównywane referencje do obiektu są takie same.
Natomiast w drugim przypadku jest tworzony całkowicie nowy obiekt i jego referencja będzie zupełnie inna niż w przypadku s1 czy s2.
Ale prosiłbym kogoś bardziej doświadczonego i posiadającego wiekszą wiedzę o potwierdzenie lub wyprowadzenie z błędu ;)

1

JVM sobie to ogarnia przez String poola. Więcej tutaj: http://javarevisited.blogspot.com/2013/07/java-string-tutorial-and-examples-beginners-programming.html (punkt 3)

1 użytkowników online, w tym zalogowanych: 0, gości: 1