字节数组为什么不能使用valueof();方法
如题。谢谢大家了~
问题描述有点不清楚哦,是问的Java的String.valueOf()吗?
以下回答仅仅针对Java的String.valueOf():
String.valueOf() 方法其实很简单,只做了一件事,帮我们创建了一个String对象,譬如char[] 转为字符串:
public static String valueOf(char data[]) {
return new String(data);
}
至于为什么不提供byte[] 到字符串的转换,我认为是因为编码的缘故:
byte到char的转换,是需要指明编码的,同样一个 byte 数组,在不同的编码格式下,对应的字符串是不一样的。valueOf 如果要支持 byte 数组,那么就需要两个参数,形如: String.valueOf(byte[] bytes, Charset charset)
因此我猜想,这样 valueOf ,还不如让开发者直接调用public String(byte bytes[], int offset, int length, Charset charset)呢。
啊啊啊,我又去看了看API,觉得你说的好有道理啊!!!
Java中的String类提供了一个构造函数
public String(byte[] bytes, int start, int length);
这个构造函数用于将byte数组转换为字符串,他的第二个参数是开始下标,第三个参数是结束下标。
构造函数都有了,还要valueOf干嘛[doge]
嗯嗯,我看了API 晓得了,谢谢你~