Heim >Java >javaLernprogramm >Warum wird mein Java-Byte-Array als „[B@1ef9157'' anstelle seines Inhalts gedruckt?

Warum wird mein Java-Byte-Array als „[B@1ef9157'' anstelle seines Inhalts gedruckt?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 05:03:02418Durchsuche

Why Does My Java Byte Array Print as

Verstehen Sie „[B@1ef9157“: Binär oder Adresse?

Beim Arbeiten mit Byte-Arrays in Java stoßen Sie möglicherweise auf das „[ B@-Präfix“ beim Drucken des Byte-Arrays. Dies kann verwirrend sein, da Sie möglicherweise erwarten, den tatsächlichen Inhalt des Arrays und nicht eine scheinbar zufällige Zeichenfolge zu sehen.

Erklärung

Das „[B@ Präfix“ ist keine Darstellung des Inhalts des Byte-Arrays. Es ist die Objekt-ID des Arrays. Diese ID identifiziert das Array im Speicher.

Struktur der Objekt-ID

Die Objekt-ID besteht aus:

  • [ : Gibt an, dass es sich um ein Array handelt
  • B: Gibt an, dass es sich um ein Byte-Array handelt
  • @: Trennt den Typ vom Objekt-ID
  • 1ef9157: Eine hexadezimale Darstellung der Objekt-ID

Inhalt des Byte-Arrays drucken

Wenn Ihr Ziel ist es, die tatsächlichen Werte des Byte-Arrays zu drucken. Sie müssen eine Methode verwenden, die die Bytes speziell in ein druckbares Format konvertiert. Sie können beispielsweise die Methode byteArrayToString() verwenden:

<code class="java">byte[] in = new byte[] { 1, 2, 3, -1, -2, -3 };
System.out.println(byteArrayToString(in));</code>

Die Methode byteArrayToString() konvertiert das Byte-Array in eine Zeichenfolge aus hexadezimalen Zeichen und erleichtert so das Lesen.

JNI-Typnomenklatur

Das „[B@-Präfix““ ist Teil der JNI-Typnomenklatur (Java Native Interface). Diese Nomenklatur wird verwendet, um Java-Typen in nativem Code zu identifizieren:

  • B - Byte
  • [ - Array
  • @ – Trennzeichen zwischen Typ und ID
  • 1ef9157 – Objekt-ID

Weitere Informationen zur JNI-Typnomenklatur finden Sie in der offizielle JNI-Dokumentation.

Das obige ist der detaillierte Inhalt vonWarum wird mein Java-Byte-Array als „[B@1ef9157'' anstelle seines Inhalts gedruckt?. 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