来自String类:
public String(byte[] bytes,
int offset,
int length)
Javadoc:
使用平台的默认字符集解码指定的字节子数组,构造一个新的String。
新String的长度是charset的函数,因此可能不等于子数组的长度。
未指定给定字节在默认字符集中无效时此构造函数的行为。当需要更多地控制解码过程时,应该使用CharsetDecoder类。
粗体部分是什么意思?
答案 0 :(得分:3)
新String的长度是charset的函数,因此可能不等于子数组的长度。
在某些字符集中,某些字符或甚至所有字符都使用多个字节。因此,给定长度的数组可能会产生较短的字符串。不要假设一个字节= 1个字符。
未指定给定字节在默认字符集中无效时此构造函数的行为。当需要更多地控制解码过程时,应该使用CharsetDecoder类。
如果您使用某些字符集解码字符串,并且字节数组包含字符集未知的值,则会得到未定义的行为。例如,如果字符集使用0到127之间的值,并且您的数组包含值-5,则会得到未定义的行为。