字符串的详解
1. StringBuilder和StringBuffer
- String类是用来操作字符串的,它每次操作字符串时String对象都是不可变的,适用于没有循环的字符串拼接
- StringBuilder、StringBuffer内容可以修改(StringBuilder和StringBuffer用法相同),适用于反复对字符串的操作(StringBuilder适用于单线程反复对字符串的操作,StringBuffer适用于多线程反复对字符串的操作)
单线程:程序执行时只就行一个程序运行
多线程:一个程序运行的同时其他程序也进行运行
2.String,StringBuilder和StringBuffer区别
- String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
- StringBuffer与StringBuilder大部分功能是相似的
- StringBuffer属于线程安全操作;而StringBuilder属于线程不安全操作
3.String,StringBuilder和StringBuffer的优点缺点
- 缺点: String运行效率低,占据资源大,对内存耗费大(每次修改时都会返回一个新字符串)
- 优点:String在操作字符串时线程是安全的
- 缺点:StringBuilder在操作字符串时线程不安全的
- 优点:StringBuilder运行效率快,占据资源少
- 缺点:StringBuffer运行效率,占用资源都低于StringBuilder
- 优点:StringBuffer运行效率快(低于StringBuilder),占据资源少(低于StringBuilder)
代码演示
- 字符串是不可变的数据类型
- 几乎所有的字符串操作都会返回一个新的字符串
String
concat()方法运用于将指定字符串参数连接到字符串上
public static void main(String[] args) {
String sb =("陈鲁班的腿特别短");
String sb2=sb.concat(",陈卤蛋的腿也很短");
System.out.println(sb);
System.out.println(sb2);
}
StringBuider
- :
append()是往动态字符串数组添加,如“x”+“y”相当那个‘+’号
public static void main(String[] args) {
StringBuider sb =new StringBuider();
StringBuider sb2 =new StringBuider("陈鲁班的腿特别短");
System.out.println(sb2);
sb2.append(",陈卤蛋的腿也很短");
System.out.println(sb2);
}
StringBuffer
append()是往动态字符串数组添加,如“x”+“y”相当那个‘+’号
public static void main(String[] args) {
StringBuffer sb =new StringBuffer();
StringBuffer sb2 =new StringBuffer("陈鲁班的腿特别短");
System.out.println(sb2);
sb2.append(",陈卤蛋的腿也很短");
System.out.println(sb2);
}
append()与concat()的区别
append()是将sb,sb2存在同一个地址内存
concat()是将sb,sb2存在两个不同的地址内存