Solo  当前访客:1 开始使用


String的底层结构

底层是个数组

jdk9之前是char数组,jdk9之后是byte数组;这个数组是final的

为什么要将char数组改为byte数组,是因为经过调研之后发现,大多数的字符串都适用Latin-1字符编码(iso-8859-1)表示的;一个char占用两个字节,Latin-1字符编码占用一个字节

char占用两个字节,所以无法存储一个表情符号,如😊

所以在处理的时候很安全和可靠,是线程安全的

一旦重建就不能修改了;修改的话就会返回一个新的字符串;

因为是数组,查找的时候就很快;

在jvm中有个常量字符串池,节约内存,提高性能


可变字符串:

StringBuffer 线程安全的,方法是同步

StringBuilder 线程不安全的,没有同步的性能开销


标题:String的底层结构
作者:temp12138
地址:https://solo.mfyzl.icu/articles/2024/03/20/1710923590536.html

标签:
新一篇: 消息队列:重复消费和一致性消费 旧一篇: @SpringBootApplication注解