java学习——面向对象基础(5)

68 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情

StringJoiner

JDK8出现的一个可变的操作字符串的容器,可以高效、方便的拼接字符串。

创建对象

方法名说明
public StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号

成员方法

方法名说明
public StringJoiner add(添加的内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接后的结果)

字符串拼接的底层原理

  1. 等号右边没有变量:触发字符串的优化机制,在编译的时候就已经是最终的结果了
  2. 等号右边有变量:每一行拼接的代码都会在内存中创建新的字符串,这样在内存中创建了很多对象,浪费空间,时间慢。所以如果很多字符串拼接不要直接+,这样会在底层创建多个对象,浪费时间和性能。

StringBuilder提高效率原理图

所有要拼接的内容都往StringBuilder中放,不会创建很多无用的空间,节约内存

StringBuilder源码分析

  • 默认创建一个长度为16的字节数组
  • 添加的内容长度小于16,直接存
  • 添加的内容大于16会扩容(原来的容量*2+2)
  • 如果扩容之后还不够,以实际长度为准

集合

集合和数组的对比

  • 长度:数组长度固定,集合长度可变(自动扩容,自动伸缩,可长可短)
  • 存储类型:数组可存基本、引用数据类型,集合只能存引用数据类型,要存基本数据类型,需要把它变成对应的包装类

创建集合

ArrayList<String> list = new ArrayList<>();

打印对象不是地址,而是集合中存储的数据内容。在展示的时候会拿[]把所有的数据进行包裹

成员方法

image.png

增删改查

至此,面向对象的基础知识就学完了,接下来就要进入面向对象进阶的学习了。