文章预览
此答案节选自我们最近弄的 面试鸭小程序 ,更多 大厂常问面试题 ,可以点击下面的小程序进行阅读哈! 这个题目的答案其实非常简单:这个操作主要是为了 节省内存空间,提高内存利用率 。 在 JDK 9 之前,String 类是基于 char[] 实现的,内部采用 UTF-16 编码,每个字符占用两个字节。 但是,如果当前的字符仅需一个字节的空间,这就造成了浪费。例如一些 Latin-1 字符用一个字节即可表示。 因此 JDK 9 做了优化采用 byte 数组来实现: 并引入了 coder 变量来标识编码方式(Latin-1 或 UTF-16)。对于大多数只包含 Latin-1 字符(即每个字符可以用一个字节表示)的字符串,内存使用量减半。 扩展 Latin1 Latin1 是国际标准编码 ISO-8859-1 的别名。Latin1 也是单字节编码,在 ASCII 编码的基础上,利用了 ASCII 未利用的最高位,扩充了 128 个字符,因此 Latin1 可以
………………………………