Strona główna › Pytania INF.04 › Pytanie 144
INF.04 · pytanie #144
Jaki będzie wynik działania poniższego kodu w języku Java? <pre class="code-block">String a = "hello"; String b = "hello"; String c = new String("hello"); System.out.println(a == b); System.out.println(a == c); System.out.println(a.equals(c));</pre>
- Atrue, false, true
- Bfalse, false, true
- Ctrue, true, true
- Dtrue, false, false
Poprawna odpowiedź: A. true, false, true
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Wynik działania kodu to true, false, true. Pierwsza linia kodu, gdzie porównujemy zmienne 'a' i 'b' przy użyciu operatora '==', zwraca true, ponieważ obie zmienne wskazują na ten sam obiekt w pamięci, co jest efektem optymalizacji JVM dla literałów typu String. W przypadku drugiej linii, gdzie porównujemy 'a' i 'c', wynik to false, ponieważ 'c' to nowy obiekt utworzony przy pomocy operatora 'new', a więc ma inną referencję w pamięci. W trzeciej linii używamy metody 'equals()', która porównuje wartości obiektów, a nie ich referencje. W tym przypadku porównywane są wartości stringów i ponieważ wszystkie mają tę samą treść, wynik to true. Zrozumienie różnicy między operatorem '==' a metodą 'equals()' jest kluczowe w programowaniu w Javie. Przy pracy z obiektami, zawsze warto stosować 'equals()' do porównywania zawartości, aby uniknąć nieporozumień związanych z referencjami."
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.