美文网首页
String的底层实现原理

String的底层实现原理

作者: 糯米团子123 | 来源:发表于2022-07-14 15:48 被阅读0次

    先看jdk8源码:


    jdk8 string源码.png

    可以看出:

    1. String类由final修饰,不可以被继承

    2. 底层是由char数组实现的

    3. value用final修饰,不能修改value的引用地址(value不可变)

    4. private修饰和成员变量没有提供setter接口,保证了不可以通过外部接口来修改String的值

    5. 在JDK9中,将底层的char[]数组改为了byte[]数组存储。
      原因:char类型是2字节的,使用 char[] 来表示 String 就导致了即使 String 中的字符只用一个字节就能表示,也必须占用两个字节。但是在实际使用中,只用单字节字符的频率远高于双字节字符,节省字符串的占用空间
      仅仅将char[]数组存储修改为byte[]数组存储是远远不够的,jdk9中还配合了 Latin-1 的编码方式的编码方式( Latin-1:用单字节表示字符)。对于双字节字符使用UTF16的编码方式表示。因此在jdk9的String源码中引入了coder字段区分编码方式。

    private final byte coder;
    

    Java 会根据字符串的内容自动设置为相应的编码,要么 Latin-1 要么 UTF16。

    相关文章

      网友评论

          本文标题:String的底层实现原理

          本文链接:https://www.haomeiwen.com/subject/yvgxirtx.html