一、StringBuilder
StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。作用是提高字符串的操作效率。
注意:使用String创建字符串对象时,是不能改变字符串的内容的,例如:
String s1 = "aaa";
String s2 = "aaa"+"bbb"+"ccc"+"ddd";
上述代码中,s1的内容为"aaabbbcccddd",在这个过程中,是先创建了"aaa"字符串,再创建"aaabbb"字符串,再创建"aaabbbccc"字符串,再创建"aaabbbcccddd"字符串,虽然最终s1的内容为"aaabbbcccddd",但却产生了很多用不到的字符串,占用内存空间。而如果使用StringBuilder对象对字符串内容进行改变,都只有一个StringBuilder对象,效率更高。
StringBuilder的构造方法:
例如:
StringBuilder sb = new StringBuilder("abc");
StringBuilder的成员方法:
注:StringBuilder的底层做了一些特殊处理,打印对象不是地址值而是属性值。
注意:StringBuilder对象.reverse()调用时StringBuilder对象内容直接发生变化,不用将返回值赋给StringBuilder对象。
说明:使用StringBuilderd的场景
(1)字符串的拼接;
(2)字符串的反转。
补充:StringBuilder的默认容量(长度)为16(可保留16个字符),当存入的数据超过默认容量,则进行扩容,新容量=老容量*2+2.如果存入的数据超过了扩容之后的长度,则以实际为准。例如,往StringBuilder对象中添加长度为30的数据,则StringBuilder对象从16扩容到34,若往StringBuilder对象中添加长度为36的数据,则StringBuilder对象从16扩容到36.
二、StringJoiner
StringJoiner和StringBuilder一样,也是一个容器,创建之后里面的内容是可变的。作用是提高字符串的操作效率,而且代码编写特别简洁,是在JDK8之后出现的,市场上很少有人用。
构造方法:
成员方法:
补充:StringBuilder对象.capacity()可获取StringBuilder对象的容量。
注意:add()方法只能添加字符串。
例子:
注意:字符串中的逗号后面又空格。
三、