因此我有一个字符串的字节值。例如通过:
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
只是一个表示为字符串的对象引用,它不是实际的字节数组
不,那是类名([B
is byte[]
)和哈希码(1339a0dc
是十六进制的哈希码)。哈希不能反转,因为它们不是双射的。
为什么要打印这个?因为您使用的是隐式toString()
. 这个:
System.out.println(str.getBytes());
被编译器翻译成这样:
System.out.println(str.getBytes().toString());
因为System.out.println()
需要 aString
作为参数,所以这里进行了隐式转换。
因此,您使用的是默认Object#toString()
实现,正如我之前解释的那样(文档中的更多详细信息)