das stimmt so nicht. Den Inhalt kannst du mit equals effizient prüfen, allerdings prüfst du mit == ob ein String auf den selben String zeigt, wie der String auf den gezeigt wird. Dies ist dann der Fall, wenn der String bereits im Stringpool vorhanden ist. Der Stringpool ist ein recyclingpool, der erheblich Speicher sparen soll, da Strings sehr Speicher lastig sind. Wenn du also == statt equals benutzt kann es durch aus funktionieren:String vergleicht man mit equals, nicht mit ==
[CODE lang="java" title="Beispiel"]String a="Hello";
String b= new String("Hello");
String c= "Hello";
String d= "hello";
boolean ab= a.equals(b); // ergibt true
boolean ab2= a==b //ergibt false -> new erzeugt ein neues Objekt von String und ignoriert immer den Pool
boolean ac = a.equals(c);// ergibt true
boolean ac2= a==c // ergibt true-> der String ist im Stringpool vorhanden und die REFERERENZ c zeigt auf das selbe Objekt
boolean ad = a.equals(d); // ergibt false Java ist UpperCase empfindlich
boolean ad2= a==d;// java findet aufgrund des Kleinbuchstaben den String nicht im Pool
//kleine Randanmerkung: boolische Werte werden vor der Zuweisung ausgewertet, deswegen ist es möglich dies ohne Klammern zu demonstrieren [/CODE]