持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
StringJoiner
JDK8出现的一个可变的操作字符串的容器,可以高效、方便的拼接字符串。
创建对象
| 方法名 | 说明 |
|---|---|
| public StringJoiner(间隔符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号 |
| public StringJoiner(间隔符号,开始符号,结束符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号 |
成员方法
| 方法名 | 说明 |
|---|---|
| public StringJoiner add(添加的内容) | 添加数据,并返回对象本身 |
| public int length() | 返回长度(字符出现的个数) |
| public String toString() | 返回一个字符串(该字符串就是拼接后的结果) |
字符串拼接的底层原理
- 等号右边没有变量:触发字符串的优化机制,在编译的时候就已经是最终的结果了
- 等号右边有变量:每一行拼接的代码都会在内存中创建新的字符串,这样在内存中创建了很多对象,浪费空间,时间慢。所以如果很多字符串拼接不要直接+,这样会在底层创建多个对象,浪费时间和性能。
StringBuilder提高效率原理图
所有要拼接的内容都往StringBuilder中放,不会创建很多无用的空间,节约内存
StringBuilder源码分析
- 默认创建一个长度为16的字节数组
- 添加的内容长度小于16,直接存
- 添加的内容大于16会扩容(原来的容量*2+2)
- 如果扩容之后还不够,以实际长度为准
集合
集合和数组的对比
- 长度:数组长度固定,集合长度可变(自动扩容,自动伸缩,可长可短)
- 存储类型:数组可存基本、引用数据类型,集合只能存引用数据类型,要存基本数据类型,需要把它变成对应的包装类
创建集合
ArrayList<String> list = new ArrayList<>();
打印对象不是地址,而是集合中存储的数据内容。在展示的时候会拿[]把所有的数据进行包裹
成员方法
增删改查
至此,面向对象的基础知识就学完了,接下来就要进入面向对象进阶的学习了。