1. String
Array
Ich möchte Ihnen einen kurzen Überblick über String
Arrays geben.
Wie bereits erwähnt, kann ein Array einen beliebigen Typ haben. Dies bedeutet, dass Sie ein Array von s erstellen können String
. Wenn wir ein Programm schreiben wollten, das „10 Zeilen von der Tastatur liest und sie in umgekehrter Reihenfolge anzeigt“, würde der Code wie folgt aussehen:
|
Erstellen Sie ein Scanner Objekt . Erstellen Sie ein Array-Objekt mit 10 Elementen. Schleife von 0 bis 9. Lesen Sie eine Zeichenfolge von der Tastatur und speichern Sie sie in der nächsten Zelle des Arrays. Schleife von 9 bis 0. Zeigen Sie die nächste Zelle im Array an |
Der Code hat sich kaum geändert! Wir mussten beim Erstellen des Arrays nur int
durch ersetzen. String
Nun, und beim Lesen der Zeichenfolge über die Tastatur haben wir die nextInt()
Methode auch durch ersetzt nextLine()
.
2. String
Array im Speicher
Und noch eine nützliche Tatsache. Betrachten wir 3 Bilder:
Bild 1. Wie ein String
Objekt im Speicher angeordnet ist:
Dieses Bild stammt aus früheren Lektionen.
Bitte beachten Sie, dass der Text der Zeichenfolge nicht direkt in der Variablen gespeichert wird: Dafür wird ein separater Speicherblock zugewiesen. Eine String
Variable speichert die Adresse (Referenz) auf ein Objekt, das den Text speichert.
Bild 2. So ist ein Integer-Array im Speicher angeordnet:
Auch dieses Bild kommt mir bekannt vor.
Bild 3. So ist ein String-Array im Speicher angeordnet:
Auf der linken Seite sehen wir eine Array-Variable vom Typ String[]
(sie speichert die Adresse eines Array-Objekts).
In der Mitte haben wir String
das Array-Objekt selbst.
Und auf der rechten Seite befinden sich String-Objekte, die Text speichern.
Die Zellen des String
Arrays speichern nicht die Strings selbst (den Text der String-Objekte). Stattdessen speichern sie ihre Adressen (Verweise darauf). Genauso wie String
Variablen die Adressen von String-Objekten speichern (wo der Text gespeichert ist).
Berücksichtigen Sie Folgendes, wenn Sie Array-Zellen vergleichen:
|
Erstellen Sie ein Array mit 10 Strings. Geben Sie Werte in das Array ein false (die Referenzen sind gleich) false (die Referenzen sind nicht gleich)true (die Strings sind gleich) true (die Strings sind immer noch gleich) |
3. Schnelle Array-Initialisierung in Java
Arrays sind äußerst nützlich, daher haben die Entwickler von Java versucht, die Arbeit mit ihnen so bequem wie möglich zu gestalten.
Das erste, was sie taten, war die Vereinfachung der Array-Initialisierung, des Prozesses, bei dem Sie die Anfangswerte eines Arrays bereitstellen.
Schließlich benötigt ein Programm neben den irgendwo ausgelesenen Daten häufig auch eigene interne Daten, um zu funktionieren. Angenommen, wir müssen die Länge jedes Monats in einem Array speichern. So könnte der Code aussehen:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
Aber dank der Entwickler von Java gibt es eine Möglichkeit, dies prägnanter zu formulieren:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Sie können einfach alle Werte des Arrays durch Kommas getrennt auflisten!
Praktisch, oder? Aber das ist nicht alles.
Tatsächlich kann der Compiler den Typ des Containers (Array-Objekts) anhand des Typs der Werte des Arrays bestimmen. Und um die Länge des Arrays zu bestimmen, ist es trivial, die Anzahl der in den geschweiften Klammern geschriebenen Elemente zu zählen.
Das bedeutet, dass dieser Code noch kürzer geschrieben werden kann:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Eine Schönheit, nicht wahr? 🙂
Dies wird als „schnelle Array-Initialisierung“ bezeichnet. Das funktioniert übrigens auch für andere Typen als int
...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION