在Java中通过其值初始化字节数组?

在Java中通过其值初始化字节数组?,java,byte,Java,Byte,因此,我有一个字符串的字节值。例如,通过: String str="Test String"; System.out.println(str.getBytes()); 这给了我: [B@1339a0dc 我可以使用它初始化字节数组,例如: byte[] bytes=new bytes("[B@1339a0dc"); 还是什么?否。这是类名([B是字节[])和哈希代码(1339a0dc是十六进制的哈希代码)。哈希不能反转,因为它们不是 为什么要打印它?因为您使用的是隐式toString()。

因此,我有一个字符串的字节值。例如,通过:

String str="Test String";
System.out.println(str.getBytes());
这给了我:

[B@1339a0dc
我可以使用它初始化字节数组,例如:

byte[] bytes=new bytes("[B@1339a0dc");
还是什么?

否。这是类名(
[B
字节[]
)和哈希代码(
1339a0dc
是十六进制的哈希代码)。哈希不能反转,因为它们不是

为什么要打印它?因为您使用的是隐式
toString()
。这:

System.out.println(str.getBytes());
由编译器转换为以下格式:

System.out.println(str.getBytes().toString());
因为
System.out.println()
字符串作为参数,所以这里进行隐式转换


因此,您使用的是默认的
对象#toString()
实现,正如我前面解释的那样(更多详细信息)

getBytes
返回一个
byte
数组。因此,您可以执行以下操作:

byte[] bytes = str.getBytes(); 
直接的

[B@1339a0dc
只是一个用字符串表示的对象引用,而不是实际的字节数组