ホームページ  >  記事  >  Java  >  Java バイト配列が内容ではなく \"[B@1ef9157\" として印刷されるのはなぜですか?

Java バイト配列が内容ではなく \"[B@1ef9157\" として印刷されるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 05:03:02296ブラウズ

Why Does My Java Byte Array Print as

「[B@1ef9157」: バイナリかアドレスか?

Java でバイト配列を操作する場合、「[ B@ プレフィックス」をバイト配列を印刷するときに使用します。一見ランダムな文字列ではなく、配列の実際の内容が表示されると予想されるため、これは混乱を招く可能性があります。

説明

「[B@ prefix」はバイト配列の内容を表すものではありません。配列のオブジェクトIDです。この ID はメモリ内の配列を識別します。

オブジェクト ID の構造

オブジェクト ID は次のもので構成されます:

  • [ : 配列であることを示します
  • B: バイト配列であることを指定します
  • @: 型と配列を分離します。オブジェクト ID
  • 1ef9157: オブジェクト ID の 16 進表現

バイト配列の内容を印刷

目的はバイト配列の実際の値を印刷することなので、バイトを印刷可能な形式に具体的に変換するメソッドを使用する必要があります。たとえば、byteArrayToString() メソッドを使用できます。

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

byteArrayToString() メソッドは、バイト配列を 16 進文字の文字列に変換して、読みやすくします。

JNI 型の命名法

「[B@ プレフィックス」は、JNI (Java Native Interface) 型の命名法の一部です。この命名法は、ネイティブ コードで Java 型を識別するために使用されます:

  • B - byte
  • [ - array
  • @ - タイプと ID の間の区切り文字
  • 1ef9157 - オブジェクト ID

JNI タイプの命名規則の詳細については、「公式 JNI ドキュメント。

以上がJava バイト配列が内容ではなく \"[B@1ef9157\" として印刷されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。