Heim  >  Artikel  >  Java  >  Was bedeutet „[Ljava.lang.Object;' bei der Java-Array-Typkodierung?

Was bedeutet „[Ljava.lang.Object;' bei der Java-Array-Typkodierung?

Barbara Streisand
Barbara StreisandOriginal
2024-11-18 19:59:02124Durchsuche

What Does

Verstehen der Objekt-Array-Typkodierung

Wenn Sie ein Objekt aus einem Funktionsaufruf abrufen und seine Zeichenfolgendarstellung drucken, stoßen Sie möglicherweise auf eine rätselhafte Notation wie „[Ljava.lang.Object;“. Dieser rätselhafte Ausdruck stellt den Klassentyp des Objekts dar, aber wie entschlüsseln wir sein kryptisches Format?

Das Klassentyp-Codierungsschema wird in Class.getName() elegant detailliert beschrieben: Für Referenztypen (ausgenommen Arrays) gilt das Binärname wird zurückgegeben. Primitive Typen und void werden ihren Java-Schlüsselwörtern zugewiesen. Für Arrays nimmt ihre Codierung jedoch eine eindeutige Form an.

Array-Codierung: Aufschlüsselung von [ Ljava.lang.Object; ]

"Ljava.lang.Object;" ist die Notation für die Java-Klasse, die ein Array von Objekten darstellt, auch bekannt als Object[].class. Das Benennungsmuster folgt den folgenden Regeln:

  • Der Name des Elementtyps wird zuerst angegeben.
  • Bei Arrays wird dem Elementtyp ein oder mehrere „[“-Zeichen vorangestellt. Angabe der Verschachtelungstiefe.

Verstehen der Kodierungsnotation

Das Format ist wie folgt:

Elementtypkodierung
boolescher Wert Z
Byte B
char C
double D
float F
int I
long J
short S
class or interface Lclassname;

Beispieldekodierungen

Betrachten Sie zur Veranschaulichung diese Beispiele:

  • [[[I@xxxxx: Dies stellt ein Array mit drei Verschachtelungsebenen dar, das ganze Zahlen als Elemente enthält.
  • [[Ljava.lang.String;@xxxxx: Dies bezeichnet ein Array mit zwei Verschachtelungsebenen, das Arrays von Strings enthält.
  • [Z@xxxxx: Dies stellt ein Array mit booleschen Elementen dar.

Warum Arrays toString() überschreiben

Entgegen der Erwartung weicht die toString()-Methode für Arrays von der Implementierung der Object-Klasse ab. Sie gibt einen String im oben genannten Format zurück, da Arrays diese Methode nicht überschreiben. Daher wird die von Object geerbte Methode aufgerufen, die wie folgt angegeben ist:

String.class gibt einen String im Format zurück: getClass().getName() '@' Integer.toHexString(hashCode())

Alternative Array-String-Darstellung

Die Klasse java.util.Arrays bietet benutzerfreundlichere String-Darstellungen für Arrays:

  • Arrays.toString (nums): Für primitive Arrays und Object[] wird eine durch Kommas getrennte Liste von Elementen angezeigt.
  • Arrays.deepToString(table): Für mehrdimensionale Arrays wird eine verschachtelte Darstellung bereitgestellt.

Zusätzliche nützliche Ressourcen

  • Arrays.equals und Arrays.deepEquals: Diese Methoden vergleichen Arrays auf elementweise Gleichheit.
  • Java Arrays.equals() gibt für zweidimensionale Arrays false zurück
  • Wirksam Java 2. Auflage, Punkt 53: Schnittstellen gegenüber Reflexion bevorzugen

Das obige ist der detaillierte Inhalt vonWas bedeutet „[Ljava.lang.Object;' bei der Java-Array-Typkodierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn