Klicken Sie Zeilen an, die mit + markiert sind. Dort ist Hilfeinformation hinterlegt.
Die Klassenmethode sort ist in der Klasse java.util.Array mehrfach überladen. Für Arrays mit verschiedenen Elementtypen gibt es verschiedene Methoden. Eine Signatur sort(String[]) ist allerdings nicht dabei.
Von den überladenen Methoden wird deshalb sort(Object[]) als die nach Typanpassung am besten passende aufgerufen. Diese Methode ruft für den Vergleich der Array-Elemente die Methode compareTo auf, die es ja in der Klasse String gibt (siehe Folie 2-20 und 2-22).
compareTo legt die sogenannte natürliche Ordnung der Strings fest. Diese Ordnung ist aber leider nicht die, die Sie aus dem Duden oder aus Lexika kennen, denn sie beruht auf der Ordnung der Zeichencodes. Näheres dazu bei der Ausgabeschleife.
Testen Sie die Ausgabe des Programms mal mit diesen beiden Aufrufen:
  java StringSort Hallo Hi Servus
  java StringSort Servus hallo hi hällou
Der erste Aufruf liefert die drei Strings wie erwartet aufsteigend sortiert.
Beim zweiten Aufruf scheint die Sortierung nicht zu funktionieren. Woran liegt das? Die Auflösung ist bei Zeile 22 versteckt.
Die für die Sortierung verwendete Ordnungsrelation beruht auf der Ordnung der Zeichencodes. Die Strings werden zeichenweise verglichen und Großbuchstaben sind dabei immer kleiner als Kleinbuchstaben, denn sie haben den kleineren Zeichencode (siehe Folie 1-24), und Umlaute haben einen größeren Zeichencode als alle anderen Buchstaben. Im Duden werden dagegen Groß- und Kleinbuchstaben bei der Sortierung gleich behandelt, ebenso Umlaute und Nichtumlaute.