Was ist der Unterschied zwischen == und equals() in Java?
Hallo Kollegen! Ich habe gerade angefangen, Java zu lernen und bin auf eine unverständliche Situation beim Vergleichen von Strings gestoßen. Habe einen einfachen Code geschrieben:\n\n```java\nString a = "Hallo";\nString b = "Hallo";\nString c = new String("Hallo");\n\nSystem.out.println(a == b); // true\nSystem.out.println(a == c); // false\nSystem.out.println(a.equals(c)); // true\n```\n\nWarum gibt `a == b` `true` zurück, aber `a == c` — `false`? Und was hat `equals()` damit zu tun? Ich dachte, beide Operatoren vergleichen Werte. Wo ist der Haken? Erklärt mir bitte wie einem Anfänger, wann man `==` und wann `equals()` verwendet. Besonders interessiert mich, wie das mit Strings und anderen Objekten funktioniert.\n\n<<>>\n
Hauptunterschied: Referenzvergleich vs Inhaltsvergleich
\n\nDer wesentliche Unterschied zwischen == und equals() ist, dass == die Objektreferenzen vergleicht (ob beide Variablen auf dasselbe Objekt im Speicher zeigen), während equals() den tatsächlichen Inhalt der Objekte vergleicht.