1. StringArray

Ich möchte Ihnen einen kurzen Überblick über StringArrays 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:

Scanner console = new Scanner(System.in);
String[] array = new String[10];
for (int i = 0; i < 10; i++)
{
   array[i] = console.nextLine();
}
for (int i = 9; i >= 0; i--)
{
   System.out.println(array[i]);
}
Erstellen Sie ein ScannerObjekt .
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 intdurch ersetzen. StringNun, und beim Lesen der Zeichenfolge über die Tastatur haben wir die nextInt()Methode auch durch ersetzt nextLine().


2. StringArray im Speicher

Und noch eine nützliche Tatsache. Betrachten wir 3 Bilder:

Bild 1. Wie ein StringObjekt im Speicher angeordnet ist:

String-Array im Speicher

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 StringVariable speichert die Adresse (Referenz) auf ein Objekt, das den Text speichert.

Bild 2. So ist ein Integer-Array im Speicher angeordnet:

String-Array in Speicher 2

Auch dieses Bild kommt mir bekannt vor.

Bild 3. So ist ein String-Array im Speicher angeordnet:

Wie ein String-Array im Speicher angeordnet ist

Auf der linken Seite sehen wir eine Array-Variable vom Typ String[](sie speichert die Adresse eines Array-Objekts).

In der Mitte haben wir Stringdas Array-Objekt selbst.

Und auf der rechten Seite befinden sich String-Objekte, die Text speichern.

Die Zellen des StringArrays speichern nicht die Strings selbst (den Text der String-Objekte). Stattdessen speichern sie ihre Adressen (Verweise darauf). Genauso wie StringVariablen die Adressen von String-Objekten speichern (wo der Text gespeichert ist).

Berücksichtigen Sie Folgendes, wenn Sie Array-Zellen vergleichen:

String[] array = new String[10];

array[1] = "Hello";
array[2] = array[1];
array[3] = new String("Hello");
// Compare
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
Erstellen Sie ein Array mit 10 Strings.

Geben Sie Werte in das Array ein



true (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"};