繁体   English   中英

java String.valueOf问题

[英]java String.valueOf issue

我写了这段代码:

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

为什么?

您看到的数字是数组对象哈希码

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

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

任何数组中的toString都不使用数组中的值来创建字符串,可以使用Arrays.toString(test); 为了那个原因

String.valueOf没有byte []参数,因此它将作为Object处理,并且将调用toString()方法,因为数组未实现此方法,因此Object.toString()将在数组中处理,并且结果因实例而异。

如果要将byte[]转换为String,请使用构造函数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]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM