用Java初始化Java中的字节数组?

时间:2013-06-25 16:03:46

标签: java byte

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

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

给了我:

[B@1339a0dc

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

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

还是什么?

2 个答案:

答案 0 :(得分:2)

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

byte[] bytes = str.getBytes(); 

直接

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

答案 1 :(得分:1)

没有。这是类名([Bbyte[]),哈希码(1339a0dc是十六进制的哈希码)。哈希不能被逆转,因为它们不是bijective

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

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

由编译器翻译为:

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

因为System.out.println()String为参数,所以在这里进行隐式转换。

所以你正在使用默认的Object#toString()实现,它的工作原理如我之前所解释的那样(更多细节in the documentation