文章目录
一、String、StringBuffer、StringBuilder的区别
1.从可变和不可变的角度
String 是不可变的 具体原因可以看 java中的String 以及其方法(超详细!!!)
而StringBuffer和StringBuilder是可变的
2.从安全性和需求的角度
如果不频繁修改字符串时,建议使用String
如果频繁修改字符串时,并且是多线程下,建议使用StringBuffer (能够保证线程安全)
如果频繁修改字符串时,并且是单线程下,建议使用StringBuilder (速度较快,但不保证线程安全)
二、为什么StringBuffer 和 StringBuilder 修改比String快
String每次修改都要重新创建 那两者不用
三、StringBuilder 的常见方法(StringBuffer也一样)
1.append() 添加
StringBuilder stringBuilder = new StringBuilder("asdasd");
System.out.println(stringBuilder.append("111"));
运行结果
asdasd111
2.insert(添加的位置,插入的内容) 指定位置添加
StringBuilder stringBuilder = new StringBuilder("asdasd");
System.out.println(stringBuilder.insert(2,"111"));
运行结果
as111dasd
3.delete(a,b) 删除
删a不删b 删头不删尾
StringBuilder stringBuilder = new StringBuilder("asdasds");
System.out.println(stringBuilder.delete(2,6));
运行结果
asasd
4.deleteCharAt() 指定删除
StringBuilder stringBuilder = new StringBuilder("asdasds");
System.out.println(stringBuilder.deleteCharAt(6));
运行结果
asdasd
5.setCharAt() 修改
StringBuilder stringBuilder = new StringBuilder("asdasds");
stringBuilder.setCharAt(5,'2');
System.out.println(stringBuilder);
运行结果
asdas2s
6.reverse() 反转
StringBuilder stringBuilder = new StringBuilder("asdasds");
System.out.println(stringBuilder.reverse());
运行结果
sdsadsa