Ein Programmierer der in C++ programmiert, brauch nicht lange nachzudenken, wenn es drum geht Strings zu vergleichen.
In C++ verwendet man hierfür den "ist gleich"-Operator.
Nun erkläre ich zuerst, was so ein String allgemein ist
In Java ist ein String ein Objekt der Klasse "java.lang.String" . Strings werden logischerweise vor allem dafür gebraucht, um Aneinaderreihungen von Zeichen zu speichern und zu modifizieren. Mit der String-Klasse mag man noch weit mehr machen, doch das erkläre ich ein anderes Mal.
Steht der Programmierer vor dem Problem, einen Zeichenstrang mit einem anderen Zeichenstrang zu vergleichen, wird er anfangs dazu tendieren, einfach den "ist gleich" Operator zu nutzen, genau wie auch in der Programmiersprache C++ :
Man wird allerdings sehr schnell merken, dass sowas nicht funktioniert.
Es ist einfach: Die Java VM prüft mit dem "equals" Operator lediglich, ob es sich um das selbe Objekt handelt. Die Zeichen des Strings werden nicht verglichen. Da das hier nicht der Fall ist, gibt der Operator "false" zurück, selbst wenn der Inhalt der Strings identisch ist. An dieser Stelle ist das auch überhaupt nicht verkehrt.
Jene Java Klasse "String", kann uns mit einigen Methoden unterstützen, Java Strings zu vergleichen.
In Java gibt es den sogenannten "Literal Pool", der dazu dient Zeichenketten zu speichern. Hier sind alle Zeichen der Strings abgespeichert. Sobald man einen String mit dem "new" Operator erzeugt, wird für diesen Zeichenstrang unbewusst auch ein eigener String Pool erzeugt. Sobald nun ein weiterer Zeichenstrang auf gleiche Weise erstellt wird, so befindet sich dieser nicht im String Pool von dem ersten String und ist schlichtweg ein anderes Objekt, obwohl der Inhalt der Gleiche ist.
In der Programmiersprache Java (nunmehr auch in C#) sind Strings die einzigen Objekte, die man ohne "new" erstellen darf.
Java Strings vergleichen
Keine Kommentare:
Kommentar veröffentlichen