一、"不可变"字符串
"不可变"字符串:String
不可变原因:
(1)String类内部的private final char[]字符数组不可变(内存地址不可变)
(2)一旦创建,如SubString、replace,会产生新的对象,不可变
二、"可变"字符串
StringBuilder StringBuffer
区别:
相同点:(1)都可变(2)都继承自共同父类AbstactStringBuilder
不同点:
StringBuilder :不安全,性能高(没加synchronized锁)
StringBuffer:安全,性能低(加了synchronized锁)
注:"可变"字符串的好处是:不会产生内存空间的浪费
三、字符串拼接
(1)高级拼接
- StringBuilder——(append、insert、delete、subString)
- StringJoiner——可以给指定"开头"和"结尾"
(2)普通拼接
- String.format()——格式化拼接
- String.join()——普通拼接