1

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

String str="Test String";
System.out.println(str.getBytes());

这给了我:

[B@1339a0dc

我可以使用它来初始化字节数组,例如:

byte[] bytes=new bytes("[B@1339a0dc");

或者其他的东西?

4

2 回答 2

2

getBytes返回一个byte数组。所以你可以这样做:

byte[] bytes = str.getBytes(); 

直接地。

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

于 2013-06-25T16:06:53.163 回答
1

不,那是类名([Bis byte[])和哈希码(1339a0dc是十六进制的哈希码)。哈希不能反转,因为它们不是双射的。

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

System.out.println(str.getBytes());

被编译器翻译成这样:

System.out.println(str.getBytes().toString());

因为System.out.println()需要 aString作为参数,所以这里进行了隐式转换。

因此,您使用的是默认Object#toString()实现,正如我之前解释的那样(文档中的更多详细信息)

于 2013-06-25T16:06:05.300 回答