Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Java
Javaeasy

W Javie, czym różni się `==` od `.equals()`?

Tagi
#equals#reference#string
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

`==` dla obiektów porównuje referencje (czy to ta sama instancja), a `.equals()` porównuje równość logiczną zdefiniowaną przez klasę (np. `String` porównuje treść). Dla typów prostych `==` porównuje wartości.

String a = new String("hi");
String b = new String("hi");

System.out.println(a == b);       // false
System.out.println(a.equals(b));  // true

Odpowiedź zaawansowana

Głębiej

Dla prymitywów (`int`, `long`, `boolean`) `==` porównuje wartości.

Dla obiektów (`String`, `Integer`, własne klasy) `==` sprawdza *tożsamość* (ta sama instancja), a `.equals()` sprawdza *równość logiczną* (ta sama treść/stan) zgodnie z implementacją klasy.

Praktyczne zasady

  • `.equals()` do porównywania wartości obiektów.
  • `==` gdy świadomie chcesz identity (singletony, enumy) albo gdy porównujesz prymitywy.
  • `Objects.equals(a, b)` gdy któraś strona może być nullem (null-safe).

Przykłady

Integer a = 128, b = 128;
System.out.println(a == b);        // często false (różne obiekty)
System.out.println(a.equals(b));  // true

String s1 = "hi";
String s2 = new String("hi");
System.out.println(s1 == s2);     // false
System.out.println(s1.equals(s2));// true

Typowe pułapki

  • Zakładanie, że `==` porównuje treść `String` (porównuje referencje).
  • `a.equals(b)` gdy `a` może być nullem (NPE).
  • Nadpisujesz `equals()` => musisz też `hashCode()` (HashMap/HashSet używa obu).

Powiązane pytania

Java
StringBuilder vs StringBuffer: jaka jest różnica?
#java#string#performance
Java
Dlaczego `equals()` i `hashCode()` muszą spełniać kontrakt?
#equals#hashcode#hashmap
Java
String vs StringBuilder vs StringBuffer — kiedy czego używać?
#string#stringbuilder
#performance
Java
Dlaczego String jest niemodyfikowalny w Javie?
#string#immutability#memory
Algorytmy
KMP: jak tablica LPS/prefix pomaga uniknąć ponownego porównywania znaków?
#kmp#string#pattern-matching