字符串拼接问题:
String类的对象内容不可改变:字符串的底层是一个被final修饰的数组,不能改变,是一个常量
所以每当进行字符串拼接时,总是会在内存中创建一个新的对象
进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下
例:
总共创建了三个字符串,“hello”, "world" "hello world"
引用变量s首先指向"Hello”,最终指向"helloworld"
StringBuilder类:
字符串缓存区,可以提供字符串的操作效率(看成一个长度可以变化的字符串)
底层是一个没有被final修饰的数组
允许采用多线程的方式添加或删除字符。
如果所有 字符串编辑操作都是在单个线程中执行,则应该使用StringBuilder类。
stringBuilder的构造方法:
public StringBuilder(): 构造一个空的StringBuilder容器
public StringBuilder(String str): 构造一个StringBuilder容器,并将字符串添加进去
StringBuilder类常用成员方法
public StringBuilder append(..):添加任意类型数据的字符串形式,并返回当前对象自身
还可以写成
还可以写成:
链式编程:方法返回值是一个对象,可以根据对象继续调用方法
tostring方法:
public String toString():将当前StrnigBuilder对象转换为String对象
StringBuilder和String可以相互转换
String->StringBuilder(String str):使用StringBuilder的构造方法
StringBuilder->String: 可以使用StringBuilder中的tostring转换为String对