java String.valueOf问题

java String.valueOf问题,java,string,value-of,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 为什么

我写了这段代码:

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

为什么呢?

你看到的数字是相同的

要查看数组的内容,请使用:


你看到的数字是最新的

要查看数组的内容,请使用:


toString pf any数组不使用数组中的值来创建可用于该字符串的字符串

toString pf any数组不使用数组中的值来创建可用于该字符串的字符串

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

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

因为字节数组没有
String.valueOf
,当您给它
byte[]
时,它使用
String.valueOf(Object obj)
因为字节数组没有
String.valueOf
,当您给它
byte[]
,它使用
字符串。valueOf(Object obj)
没有byte[]参数,因此它将被处理为
对象
,并且将调用
toString()
方法,因为数组未实现此方法,因此将在数组中处理,其结果因每个实例而异

如果要将
字节[]
转换为字符串,请使用构造函数或

结果:

Í
Í
Í
[-51]
[-51]
[-51]
如果要查看数组的内容,请使用

结果:

Í
Í
Í
[-51]
[-51]
[-51]
没有byte[]参数,因此它将作为
Object
处理,并且将调用
toString()
方法,因为数组没有实现此方法,因此将在数组中处理,并且其结果因每个实例而异

如果要将
字节[]
转换为字符串,请使用构造函数或

结果:

Í
Í
Í
[-51]
[-51]
[-51]
如果要查看数组的内容,请使用

结果:

Í
Í
Í
[-51]
[-51]
[-51]

您正在询问数组的值。您可能需要的是String.valueOf(test[0]),您需要的是数组的值。您可能需要的是String.valueOf(测试[0])