跳至主要內容
深入浅出 String 字符串

引子

相信每个 Javaer 都遇到过这个问题:String abc = new String("123"); 创建了几个对象?其作为八股文已是老生常谈,考究的是大伙对对象创建以及字符串在 JVM 中的存储理解。本篇文章就来深入探讨下 String 方方面面的问题。

String 内部结构

char[] -> byte[]

String 内部原本使用一个 char[] value 存储字符,若不是”版本任你更,我用 Java 8“ 的钉子户,应该能发现从 JDK 9 开始,它就变成了 byte[] value。这么做的目的主要是为了减少字符串占用的内存,减少 GC 次数。(详见参考资料JEP 254


YUDI-Corgi原创JavaJavaString大约 18 分钟