1

我写了这段代码:

byte[] test = {-51};
byte[] test2 = {-51};
byte[] test3 = {-51};
System.out.println(String.valueOf(test));
System.out.println(String.valueOf(test2));
System.out.println(String.valueOf(test3));

我得到了不同的结果:

[B@9304b1
[B@190d11
[B@a90653

为什么?

4

5 回答 5

3

您看到的数字是数组 objects 的哈希码

要查看数组的内容,请使用Arrays.toString()

System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(test2));
System.out.println(Arrays.toString(test3));
于 2012-12-13T18:00:05.037 回答
1

toString pf any 数组不使用数组中的值来创建您可以使用的Arrays.toString(test);字符串

于 2012-12-13T18:00:19.837 回答
1

String.valueOf没有 byte[] 参数,因此它将被处理为ObjecttoString()调用该方法,因为数组未实现此方法,所以Object.toString()将在数组中处理,其结果与每个实例。

如果要转换byte[]为字符串,请使用构造函数String(byte[])String(byte[] bytes, Charset charset)

byte[] test = {-51};
byte[] test2 = {-51};
byte[] test3 = {-51};
System.out.println(new String(test));
System.out.println(new String(test2));
System.out.println(new String(test3));

结果:

Í
Í
Í

如果要查看数组的内容,请使用Arrays.toString(byte[])

byte[] test = {-51};
byte[] test2 = {-51};
byte[] test3 = {-51};
System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(test2));
System.out.println(Arrays.toString(test3));

结果:

[-51]
[-51]
[-51]
于 2012-12-13T18:07:11.827 回答
0

ValueOf()只是toString()给定对象的调用。如果要打印数组的内容,请Arrays.toString()改用。

于 2012-12-13T18:00:34.127 回答
0

因为没有String.valueOf字节数组,所以当你给它时byte[],它使用String.valueOf(Object obj).

于 2012-12-13T18:03:04.580 回答