专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
BFC汇谈  ·  港币为什么这么强? ·  3 天前  
今天看啥  ›  专栏  ›  程序员鱼皮

为什么 JDK9 把 String 中 char 数组改成了 byte 数组?

程序员鱼皮  · 公众号  ·  · 2024-07-23 11:54
    

文章预览

此答案节选自我们最近弄的  面试鸭小程序 ,更多 大厂常问面试题 ,可以点击下面的小程序进行阅读哈! 这个题目的答案其实非常简单:这个操作主要是为了 节省内存空间,提高内存利用率 。 在 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 可以 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览