Heim  >  Artikel  >  Java  >  Was ist das Prinzip eines dynamischen Arrays in Java?

Was ist das Prinzip eines dynamischen Arrays in Java?

WBOY
WBOYnach vorne
2023-05-02 17:40:071333Durchsuche

1. Das Grundkonzept von Arrays . Eine Sammlung von Elementen (die Basistypen oder benutzerdefinierte Typen sein können), die in einer bestimmten Reihenfolge angeordnet sind. Sie werden kontinuierlich in dieser Reihenfolge im Speicher gespeichert. Es gibt eindimensionale Arrays, zweidimensionale Arrays und mehrdimensionale Arrays.

Nach allgemeiner Auffassung stellen wir normalerweise eine Gruppe Schafe oder Kühe in einen Kreis. Dieser Kreis entspricht einem Array-Behälter und jedes Schaf entspricht einem Element.

Das obige Konzept erfordert die Kenntnis dieser Wörter: derselbe Datentyp, eine bestimmte Reihenfolge, Sammlung und sequentielle Speicherung im Speicher.

2. So deklarieren Sie ein Array

Wie Sie dem Titel entnehmen können, sind das Deklarieren und Erstellen eines Arrays zwei verschiedene Prozesse. Die Wirkung der Aussage ist, als würde man anderen sagen, dass ich duschen werde, und die Wirkung der Schöpfung ist, als würde man anderen sagen, dass ich tatsächlich duschen werde (unangemessene Metapher, haha). Wie deklariert man also ein Array?

int[] students ; int students [];
Aus dem Obigen können wir ersehen, dass es zwei Möglichkeiten gibt, aber die erste wird im Allgemeinen empfohlen. Immerhin sieht das erste besser lesbar aus.

3. So erstellen Sie ein Array

Nachdem wir wissen, wie man ein Array deklariert, besteht der nächste Schritt darin, wie man ein Array erstellt. Verschiedene Sprachen haben unterschiedliche Methoden zum Erstellen eines Arrays, sind jedoch im Allgemeinen gleich. Hier sind mehrere Methoden in Java.

//第一种: int [] students = new  int[50]; //第二种: String [] colors =  {"red","blue","black"};
Aus dem oben Gesagten können Sie ersehen, dass das Erstellen eines Arrays so einfach ist. Keine Sorge, es gibt tatsächlich viele Wissenspunkte, die bei diesen drei Methoden beherrscht werden müssen. Tatsächlich gibt es bei der Erstellung eines Arrays einen Link namens Array-Initialisierung. Ich erstelle zum Beispiel ein Array, aber die Werte befinden sich möglicherweise zu Beginn nicht im Array-Container. Wann sind diese Werte entstanden? Das heißt, wann hat das System die von mir deklarierten roten, blauen und anderen Werte im Array-Container installiert? Wie wird das Array initialisiert?

Die Initialisierung des Arrays ist in statische Initialisierung und dynamische Initialisierung unterteilt:

Statische Initialisierung: Wenn das Array initialisiert wird, gibt der Programmierer explizit den Anfangswert jedes Array-Elements an. Die Array-Länge wird vom System bestimmt. Unter den drei oben genannten Möglichkeiten zum Erstellen eines Arrays ist die dritte die statische Initialisierung. Die zweite Methode ist dieselbe, es handelt sich jedoch um eine vereinfachte Methode der statischen Initialisierung.

Dynamische Initialisierung: Bei der dynamischen Initialisierung muss die Anzahl der Elemente angegeben werden. Die Anzahl der Array-Elemente ist bei der dynamischen Initialisierung unbekannt und muss angegeben werden. Das erste oben ist.

    4. Klassifizierung von Arrays
  • Nachdem Sie diesen Titel gesehen haben, haben Sie möglicherweise eine Frage: Gibt es Klassifizierungen für Arrays? Nicht wirklich. Lassen Sie uns Ihnen eine gute Klassifizierung geben:
  • ** Je nachdem, ob sie geordnet sind oder nicht: **Geordnete Arrays und ungeordnete Arrays.

    Je nachdem, ob das Array erweitert werden kann, wird es in statisches Array und dynamisches Array unterteilt.
Schauen wir uns zunächst statische Arrays an: Arrays, die während der Kompilierung Speicher auf dem Stapel zuweisen. Der Speicherplatz kann zur Laufzeit nicht geändert werden und wird nach der Ausführung automatisch vom System freigegeben.

Schauen wir uns dynamische Arrays an: Dynamische Arrays werden mit statischen Arrays verglichen. Die Länge eines statischen Arrays ist vordefiniert und kann im gesamten Programm nicht mehr geändert werden, sobald die Größe angegeben ist. Dies ist bei dynamischen Arrays nicht der Fall, deren Größe je nach Programmbedarf geändert werden kann. Der Speicherplatz dynamischer Arrays wird vom Heap zugewiesen (dh dynamisch zugewiesen). Es weist Speicherplatz zu, indem es Code ausführt. Diese Anweisungen werden zugewiesen, wenn das Programm sie ausführt. Der Programmierer ist für die Freigabe von Speicher verantwortlich.

Das Prinzip dynamischer Arrays in Java

Es gibt ein vorhandenes Array:

int [] data = new int[5];

Das Array kann keine Elemente mehr hinzufügen, daher initialisieren wir ein neues 1 Das Array hat eine Kapazität von 10, was dem 2-fachen der Kapazität des Arrays arr entspricht: int [] newData = new int [10];

Weisen Sie dann alle Elemente des ursprünglichen Arrays dem neuen Array zu.

Was ist das Prinzip eines dynamischen Arrays in Java?

Richten Sie dann den Referenz-Arr des ursprünglichen Arrays auf das neue Array.

Was ist das Prinzip eines dynamischen Arrays in Java?

Vergleich von statischen Arrays und dynamischen Arrays:

Was ist das Prinzip eines dynamischen Arrays in Java?Statische Arrays sind sehr bequem zu erstellen, müssen nach der Verwendung nicht freigegeben werden und sind einfach zu referenzieren, können jedoch nicht geändert werden Ihre Größe nach der Erstellung ist ihre fatale Schwäche! Denn dynamische Arrays sind mühsam zu erstellen und müssen vom Programmierer nach der Verwendung freigegeben werden, sonst kommt es zu ernsthaften Speicherlecks. Die Verwendung ist jedoch sehr flexibel und die Größe kann je nach Programmanforderungen dynamisch zugewiesen werden.

2. Eigenschaften von Arrays

Was ist das Prinzip eines dynamischen Arrays in Java?

Nachdem wir die oben genannten Grundkonzepte gemeistert haben, werfen wir einen Blick auf die Eigenschaften von Arrays. Beispielsweise sind die Eigenschaften von geordneten Arrays für uns auf jeden Fall praktisch. Für uns sind ungeordnete Arrays das Einfügen und Löschen von Daten. Die hier genannten Merkmale sind also die Merkmale, die allen Arrays gemeinsam sind, also die allgemeinen Merkmale: Zurück zu dem Artikel, den ich zuvor gepostet habe, bei den Merkmalen geht es um Zeiteffizienz und Platzeffizienz.

1. Wenn die Länge des Arrays überschritten wird, können Sie nur den Wert des alten Arrays erstellen Das gleiche Array kann nur Daten desselben Datentyps speichern.

3. Arrays können nur über Indizes auf Daten zugreifen

3 Verwendungsszenarien von Arrays

Der größte Vorteil von Arrays gegenüber Containern ist die Effizienz. In Java ist ein Array die effizienteste Methode zum Speichern und zufälligen Zugriff auf eine Folge von Objektreferenzen. Ein Array ist eine einfache lineare Folge, die den Elementzugriff sehr schnell macht kostet viel Der Preis besteht darin, dass die Größe des Array-Objekts festgelegt ist. Dies macht Arrays auch bei der Arbeit unpraktisch. Wir sollten Container in Java anstelle von Arrays bevorzugen.

4. Die zugrunde liegende Implementierung des Arrays

Die zugrunde liegende Implementierung wird hier auch mit der Java-Sprache verglichen. In zukünftigen Artikeln werde ich beispielsweise auch den durch die verknüpfte Liste in Java implementierten Container verwenden Verknüpfte Listen. Sagen Sie es kooperativ.

Java bietet großartige Sammlungs-APIs und Sammlungsklassen wie ArrayList und HashMap, die alle intern auf Arrays basieren. Java Wenn das Programm versucht, auf einen ungültigen Array-Index zuzugreifen, löst die JVM eine ArrayIndexOutOfBoundException aus.

Was ist das Implementierungsprinzip von Arrays in der Java-Sprache?

Diese Frage betrifft das Prinzip der Kompilierung. Ich kann nur sagen, dass es sich um eine Kompilierungsspezifikation handelt. In der Spezifikation zum Beispiel: Das int in int[] teilt dem Computer mit, dass es sich um ganzzahlige Daten handelt, und [] teilt dem Computer mit, dass es sich um einen Speicheradressraum für die kontinuierliche Speicherung handelt Daten sind ein Array, und das Array ist nur ein Name !!Array ist ein spezieller Typ in Java, der sich von gewöhnlichen „Instanzen einer Klasse“-Objekten unterscheidet.

Am Beispiel von HotSpot VM lautet die Antwort, dass es im Objektheader des Array-Objekts ein Längenfeld gibt, um die Länge des Arrays aufzuzeichnen. Die Implementierung des Arraylength-Bytecodes muss nur das Feld _length lesen. Das Array-Objekt in JVM ist ein spezielles Objekt. Sein Objektheader enthält ein Wort mehr als das gewöhnliche Objekt, um die Länge des Arrays zu speichern, um dieses Feld zu lesen.

Das obige ist der detaillierte Inhalt vonWas ist das Prinzip eines dynamischen Arrays in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen