String
StringBuilder
StringBuilder 可以看作是一个**容器,创建之后里面的内容是可变的。**
**作用:**提高字符串的操作效率
StringBuilder 构造方法
StringBuilder 常用方法
链式编程
当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法。
依赖前一个方法的结果,再去调用另一个方法。
StringJoiner 概述
- StringJoiner 跟StringBuilder一样,也可以看成是一个**容器**,创建之后里面的内容是可变的。
- **作用:**提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
- JDK8出现的
StringJoiner 的构造方法
StringJoiner 的成员方法
字符串原理
扩展底层原理1:字符串存储的内存原理
- 直接赋值会复用字符串常量池中的
- new出来不会复用,而是开辟一个新的空间
扩展底层原理2:==号比较的到底是什么?
扩展底层原理3:字符串拼接的底层原理
- 拼接的时候没有变量,都是字符串。**触发字符串的优化机制,**在编译的时候就已经是最终的结果了。
- 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串
- 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
扩展底层原理4:StringBuilder提高效率原理图
- StringBuilde 是一个内容可变的容器
- 所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存
扩展底层原理5:StringBuilder源码分析
- 默认创建一个长度为16的字节数组
- 添加的内容长度小于16,直接存
- 添加的内容大于16会扩容**(原来的容量*2+2)
字节数组 - 添加的内容长度小于16,直接存
- 添加的内容大于16会扩容**(原来的容量*2+2)**
- 如果扩容之后还不够,以实际长度为准