ホームページ >Java >&#&チュートリアル >\'[B\\@\' エニグマ: Java バイト配列表記法を理解する) とは何ですか?

\'[B\\@\' エニグマ: Java バイト配列表記法を理解する) とは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 04:19:28380ブラウズ

 What is the

「[B@」の謎に対処する: Java バイト配列表記法を理解する

バイトを出力するときに発生する独特の「[B@」表現Java の配列は開発者をしばしば困惑させてきました。それは何を意味しますか?またその意味をどのように解読できますか?

象徴性の解読

表記「[B@」はバイト配列の内容の 16 進数表現ではありませんむしろオブジェクト記述子です。各コンポーネントは特定の側面を表します。

  • [ : 配列型を示します。
  • B : バイト データ型を示します。
  • @ : 型識別子とオブジェクト ID を区切ります。
  • 16 進数 : 一意のオブジェクト ID またはハッシュコード。

配列の内容を効果的に出力する

オブジェクト ID ではなく、バイト配列の実際の内容を表示するには、さまざまなメソッドを使用できます。

  • 明示的な反復と変換:

    <code class="java">byte[] in = {1, 2, 3, -1, -2, -3};
    for (byte b : in) {
    System.out.print(String.valueOf(b) + " ");
    }</code>
  • 16 進文字列変換:

    <code class="java">System.out.println(Base64.getEncoder().encodeToString(in));</code>
  • カスタム文字列変換:

    <code class="java">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>

JNI 命名法を理解する

「[B@」表記これは、JNI (Java Native Interface) で型を記述するためのより大きなシステムの一部です。完全なリストは次のとおりです:

  • B - バイト
  • C - char
  • D - double
  • F - float
  • I - int
  • J - long
  • L完全修飾クラス;;** - クラス名
  • S - short
  • Z - ブール値
  • [ - 配列の次元
  • *(引数の型 )return-type - メソッド シグネチャ

この表記法を理解すると、Java データ表現の複雑な世界を自信を持ってナビゲートできるようになります。

以上が\'[B\\@\' エニグマ: Java バイト配列表記法を理解する) とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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