美文网首页
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的底层实现原理

    先看jdk8源码: 可以看出: String类由final修饰,不可以被继承 底层是由char数组实现的 valu...

  • String"+"拼接底层实现原理

    String:常量,不可变,不适合用来字符串拼接,每次都是新创建的对象,消耗较大。StringBuffer:适合用...

  • iOS底层原理:weak的实现原理

    iOS底层原理:weak的实现原理iOS底层原理:weak的实现原理

  • String类源码解读

    string类是final类型的不可变类。 实现原理:底层实现为final类型的char数组 设计亮点: 1.ha...

  • Java常见知识总结(转)

    Java总结 一、Java基础 1、String类为什么是final的。 2、HashMap的源码,实现原理,底层...

  • Today面试

    Runloop 底层原理Kvo 底层原理ARC 底层原理 如何实现GCD 底层原理Block 底层原理Aut...

  • 注解

    注解实现原理 底层使用反射实现。申明注解类需要加 @interface 注解类里只支持基本类型、String以及枚...

  • Java开发岗位面试题归类

    一、Java基础 1、String类为什么是final的。 2、HashMap的源码,实现原理,底层结构。 3、说...

  • Java面试高频问题大集合

    一、Java基础 1、String类为什么是final的。 2、HashMap的源码,实现原理,底层结构。(难,难...

  • iOS底层原理总结 - 关联对象实现原理

    iOS底层原理总结 - 关联对象实现原理 iOS底层原理总结 - 关联对象实现原理

网友评论

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

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