首頁 >Java >java教程 >為什麼我的 Java 位元組數組打印為'[B@1ef9157”而不是其內容?

為什麼我的 Java 位元組數組打印為'[B@1ef9157”而不是其內容?

Susan Sarandon
Susan Sarandon原創
2024-10-30 05:03:02424瀏覽

Why Does My Java Byte Array Print as

理解「[B@1ef9157」:二進位還是位址?

在 Java 中使用位元組數組時,您可能會遇到「[ B@ 前綴」列印位元組數組時。這可能會令人困惑,因為您可能希望看到數組的實際內容,而不是看似隨機的字串。

解釋

「[B@ prefix」不是位元組數組內容的表示。它是數組的物件 ID。此 ID 標識記憶體中的陣列。

物件ID 的結構

物件ID 組成:

  • [ :表示它是一個數組>
  • B:指定它是一個位元組數組
  • @:將型別與物件ID
  • 1ef9157
  • 1ef9157
:物件ID 的十六進位表示

列印位元組數組內容

如果您目標是列印位元組數組的實際值,您將需要使用專門將位元組轉換為可列印格式的方法。例如,您可以使用 byteArrayToString() 方法:

byteArrayToString() 方法將位元組陣列轉換為十六進位字元的字串,使其更易於閱讀。

JNI 型別命名法

    「[B@ 字首」是 JNI(Java 本機介面)型別命名法的一部份。此命名法用於識別本機程式碼中的Java 類型:
  • B
  • - byte
  • [
  • - array
  • @
  • - 類型與ID 之間的分隔符號
  • 1ef9157
- 物件ID

更多信息,請參閱官方JNI 文件。

以上是為什麼我的 Java 位元組數組打印為'[B@1ef9157”而不是其內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn