Java字符串构造函数

时间:2018-05-16 15:56:37

标签: java string constructor

来自String类:

public String(byte[] bytes,
      int offset,
      int length)

Javadoc:

  

使用平台的默认字符集解码指定的字节子数组,构造一个新的String。

     

新String的长度是charset的函数,因此可能不等于子数组的长度。

     

未指定给定字节在默认字符集中无效时此构造函数的行为。当需要更多地控制解码过程时,应该使用CharsetDecoder类。

粗体部分是什么意思?

1 个答案:

答案 0 :(得分:3)

  

新String的长度是charset的函数,因此可能不等于子数组的长度。

在某些字符集中,某些字符或甚至所有字符都使用多个字节。因此,给定长度的数组可能会产生较短的字符串。不要假设一个字节= 1个字符。

  

未指定给定字节在默认字符集中无效时此构造函数的行为。当需要更多地控制解码过程时,应该使用CharsetDecoder类。

如果您使用某些字符集解码字符串,并且字节数组包含字符集未知的值,则会得到未定义的行为。例如,如果字符集使用0到127之间的值,并且您的数组包含值-5,则会得到未定义的行为。