したがって、文字列のバイト値があります。たとえば、次のようにします。
String str="Test String";
System.out.println(str.getBytes());
それは私に与える:
[B@1339a0dc
次のようなバイト配列を初期化するためにこれを使用できますか:
byte[] bytes=new bytes("[B@1339a0dc");
か何か?
getBytes
byte
配列を返します。したがって、次のことができます。
byte[] bytes = str.getBytes();
直接。
[B@1339a0dc
String として表される単なるオブジェクト参照であり、実際のバイト配列ではありません
いいえ。それはクラス名 ( [B
is byte[]
) とハッシュコード (1339a0dc
は 16 進数のハッシュ コード) です。ハッシュは全単射ではないため、元に戻すことはできません。
なぜこれを印刷するのですか?暗黙的な を使用しているためですtoString()
。これ:
System.out.println(str.getBytes());
コンパイラによって次のように変換されます。
System.out.println(str.getBytes().toString());
なぜなら引数として を取るので、ここで暗黙の変換が行われますSystem.out.println()
。String
したがって、以前に説明したように機能するデフォルトの実装を使用していますObject#toString()
(詳細はドキュメントを参照)