java String.valueOf问题

时间:2012-12-13 17:58:51

标签: java string value-of

我写了这段代码:

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

为什么?

5 个答案:

答案 0 :(得分:3)

您看到的数字是hash codes of the array objects

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

System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(test2));
System.out.println(Arrays.toString(test3));

答案 1 :(得分:1)

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

答案 2 :(得分:1)

String.valueOf没有byte []参数,因此它将被处理为Object并且将调用toString()方法,因为数组不实现此方法,{ {3}}将在数组中处理,其结果因每个实例而异。

如果您想将byte[]转换为String,请使用构造函数Object.toString()String(byte[])

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));

结果:

Í
Í
Í

如果要查看数组的内容,请使用String(byte[] bytes, Charset charset)

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]

答案 3 :(得分:0)

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

答案 4 :(得分:0)

由于字节数组没有String.valueOf,因此当您提供byte[]时,它会使用String.valueOf(Object obj)