首頁  >  文章  >  Java  >  在Java中列印位元組數組時“[B@1ef9157”是什麼意思?

在Java中列印位元組數組時“[B@1ef9157”是什麼意思?

Barbara Streisand
Barbara Streisand原創
2024-10-28 22:05:02895瀏覽

What does

破解Java中「[B@1ef9157」背後的意思

在使用Java時,開發人員可能會遇到特殊的前綴,例如“[ B@1ef9157”嘗試列印位元組數組時。雖然這些字串看起來很神秘,但它們包含有關數組結構和內容的重要資訊。

前綴的組成

前綴“[B@1ef9157”可以是分為以下部分:

  • [表示該物件是一個陣列。
  • B表示該陣列包含位元組.
  • @ 將類型(「B」)與身分雜湊碼分開。
  • 1ef9157 表示身分雜湊碼或物件 ID。

解釋前綴

前綴本身並不能揭示位元組數組的內容。它僅表示該物件是一個位元組數組並提供其唯一標識符。數組中儲存的實際值不會以這種格式顯示。

列印數組內容

要查看位元組數組的實際內容,可以使用多種方法。一種技術涉及將位元組值轉換為十六進位字元:

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

String byteArrayToString(byte[] in) {
    char out[] = new char[in.length * 2];
    for (int i = 0; i < in.length; i++) {
        out[i * 2] = "0123456789ABCDEF".charAt((in[i] >>> 4) & 15);
        out[i * 2 + 1] = "0123456789ABCDEF".charAt(in[i] & 15);
    }
    return new String(out);
}</code>

其他資訊

有關Java 中使用的類型命名法的完整列表,請參閱JNI 文件。下表總結了常見的類型:

表>
Type Representation
位元組 B
字元 C
D
浮點數 F
整數 td> I
J
L *完全限定級*;;
S
布林型 Z
數組 [
方法簽章 (
Type Representation
Byte B
Character C
Double D
Float F
Integer I
Long J
Class L*fully-qualified-class*;;
Short S
Boolean Z
Array [
Method Signature (argument types;)return-type
參數型別;)傳回型別

以上是在Java中列印位元組數組時“[B@1ef9157”是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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