Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Jetzt lerne ich Java 6

Strings vergleichen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Der klassische Vergleich von Variablen mit dem Vergleichsoperator '==' funktioniert bei den String-Objekten nicht, also müssen Sie ausweichen! Helge Maus zeigt Ihnen in diesem Film zwei Möglichkeiten, wie Sie Strings vergleichen können.
07:55

Transkript

Das, worum wir uns jetzt mal schnell kümmern sollten, wäre natürlich, wie man auch vergleichen kann untereinander. Nun, die erste Idee würde mit Sicherheit, so aussehen. Ich habe hier zwar Strings, die ich miteinander vergleichen will. Ich sage if (strA ==, Vergleichsoperator ist hier B. Und wenn wir das Ganze dann irgendwie mit einer Ausgabe kritieren wollen, "Die beiden sind gleich". Und das scheint im Anfang zu funktionieren, wenn ich also das hier mal kurz kompalieren lasse. Und dann sehen wir, ok, es kommt keine Ausgabe. Die beiden sind auch nicht unbedingt gleich. Dann setze ich die beiden mal so, dass Sie vom außen her gleich sind, lasse das kompalieren, und wuala, scheinbar scheint hier dieser Art Strings zu vergleichen, noch zu funktionieren. Aber das ist leider ein Trugschluss, und an dieser Stelle macht uns der Compiler von Java einen kleinen Strich durch Gerechnung, wenn denn uns Strings werden durch die String Klasse und deren Instanzen abgebildet, das heißt, wir haben hier zwei Instanzen eines Strings. Und der Compiler sieht an dieser Stelle, dass wir hier zweimal das gleiche Literal, sie in gleichen Konstanten stehen haben. Was passiert doch daraufhin? Der Compiler liegt zwar zwei Klassen an, vom Prinzip her Möglichkeit liegt aber nur in einzigem Speicherbereich an und macht zwei Referenzen darauf, denn in der Variable, die ein Objekt aufnimmt, steht lediglich die Speicheradresse des Objektes im Speicher. Und hier wird also der Compiler auf Grund seiner Optimierung einfach sagen, er zeigt auf die gleiche Speicherstelle. Und Schauen ist voller da, das heißt, wir haben eigentlich die Speicheradressen in diesen beiden Strings verglichen, nicht aber deren Inhalt. Nun, gut! Also, dieser Weg hier ist für die Praxis untauglich, und Sie sollten Ihnen true List vermeiden. Jetzt wollen wir uns aber natürlich angucken, welchen Weg können wir denn gehen. Da hilft uns die String-Klasse weiter. Die String-Klasse bringt von sich aus Methoden mit. Und daher nehmen wir uns einfach mal diese Strings und schauen mal durch, was es so Methoden gibt. Und wenn Sie so durchschauen, werden Sie einiges finden, was uns auch hier zum Vergleichen helfen kann. Da finde ich einmal compareTo und compareToIgnoreCase, also ich ignoriere Groß- und Kleinschreibung, und hier unten finden wir noch einmal equals. Schauen wir doch uns erstmal compareTo an. Wir sehen, wir bekommen einen Integer zurückgeliefert, was eine seltsame Sache ist. Beim Vergleich würde ich erwarten : Ja oder Nein? Sind gleich, sind nicht gleich? Aber compareTo kann noch mehr. Und deshalb mache ich hier einen Doppelklick mal darauf, und markiere das Ganze hier rechte Maustaste Show Javadoc. Dann öffnet sich hier mein Browser, und wir können uns das Ganze hier mal kurz anschauen. Wir sehen, wir bekommen einen Integer zurückgeliefert. Das haben wir eben mal schon gesehen, und es wird einen String erwartet. Klar, der erste String, der prägt hier diese Methode mit, und der andere String, mit dem verglichen werden soll, der kommt eben hier in die runden Klammern. Und was diese Methode macht, ist, wir machen einen Stringvergleich, und zwar einen lexikographischen Vergleich. Dabei bekommen wir eines von drei möglichen Ergebnissen. Wir können entweder feststellen, dass beide gleich sind. Wenn beide gleich sind, bekommen wir den Wert 0 zurückgeliefert. Ist ein Wert davor, dann bekommen wir einen Wert <0 zurück, und ist der Wert, den wir übergeben haben, nach dem ersten String, dann bekommen wir einen Wert 0 zurückgeliefert. Damit bekommen wir also mit einer einzigen Methode direkt gesagt, wo also in der Reihenfolge auch dieser Wert stehen würde, wenn wir zum Beispiel in diese Sachen einfach alphabetisch ordnen würden. Das sollten wir uns am besten in der Praxis anschauen. Also, wir haben hier jetzt strA.compareTo und schreiben jetzt hier also strB hinein. Das Ganze liefert einen Integer zurück, und mit Hilfe einer if-Abfrage können wir das Ganze jetzt erst mal testen auf 0, denn wenn sie nicht 0 sind, sind beide auch nicht gleich. Wenn wir eine negativ Zahl zurückbekommen, also <0, dann wissen wir, dass A vor B kommt. Also schreiben wir das kurz hin, das Ganze gibt es noch in Gegenrichtung, dafür kopiere ich mir das Ganze hier und vertausche jetzt einfach hier das Vorzeichen und frage das hier so entsprechend ein. Jetzt testen wir das Ganze mal kurz. Also, hier kommt noch "Die beiden sind gleich" aus. Das ist hier oben das, was wir eigentlich gar nicht haben wollen. Das sollten wir noch kurz auskommentieren. Dann testen wir noch mal. Wir bekommen keine Ausgabe, das heißt, sie sind nicht "nicht gleich", denn sie sind gleich, und daher sind sie auch nicht in unterschiedlicher Reihenfolge. Und wenn wir jetzt gleich mal Unterschied einbauen, ich setze jetzt hier mal ein A ein, und hier ein B. Und lass das jetzt hier testen, dann bekommen wir, A kommt vor B. Es ist korrekt. Wir setzen hier mal C ein, C kommt nach D, nicht nach, dann ist das auch korrekt. Also, wir sehen, wir können mit compareTo, nun, die verschiedensten Varianten, die Reihenfolge feststellen, und natürlich auch beide gleich oder ungleich sind. Dieser Weg funktioniert also recht gut. Und zum Abschluss dieses Films möchte ich Ihnen auch noch equals vorstellen. Mit Hilfe von equals haben Sie auch noch die Möglichkeit zwei Strings miteinander zu vergleichen, aber lediglich, ob diese beiden dann noch wirklich gleich sind. Also, if ( strA. equals). Da können wir uns jetzt entscheiden, ob wir Groß- und Kleinschreibung ignorieren oder nicht. Ich sage jetzt einfach mal: "Ok, wir ignorieren es nicht". Das bedeutet, Groß- und Kleinschreibung macht einen Sinn. Und setzen wir jetzt hier unser strB noch mitein. Das Ganze gibt einen boolischen Wert. Und wenn beide gleich sind, kommt hier true raus, und dann können wir das Ganze hier dann noch entsprechend quittieren. Testen wir noch kurz! Ok, hier kommt jetzt C nach B. Das ist von vorhin auch, und jetzt machen wir zwei Bs draus, und wir bekommen jetzt hier dann wirklich die Ausgabe "Beide sind gleich". So haben Sie also jetzt gesehen, wie Sie Strings auf verschiedene Arten und Weisen miteinander vergleichen können.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!