目录
- 概要
- 三种重载构造器的使用案例
- append()方法的使用
- replace()方法的使用
- delete()方法的使用
- deletecharAt()方法的使用
- insert()方法的使用
- reverse()方法的使用
概要
有些时候,需要由较短的字符串构建字符串,例如:按键或来自文件中的单词。如果采用字符串拼接的方式来达到这个目的,效率会比较低。每次拼接字符串时,都会构建一个String对象,耗时,浪费空间,使用StringBuilder类就可以避免这个问题的发生。
如果需要小段的字符串来构建一个字符串,那么应该按照下列步骤进行。
首先,构建一个空的字符串构建器:
StringBuilder builder = new StringBuilder();
当每次需要添加一部分内容时,就调用append方法。
builder.append(ch);//appends a single character
builder.append(str);//append a string
在字符串构建完成时就调用toString方法,将可以得到一个String对象,其中包含了构建器中的字符串序列。
String completedString = builder.toString();
- 注释:StringBuilder类在Java5中引入,它的前身是StringBuffer,StringBuffer效率稍微有点低,但允许采用多线程的方式添加或删除字符。如果所有字符串编辑操作都在单个线程中执行(通常都是这样),则应该使用StringBuilder。这两个类的API是一样的。
三种重载构造器的使用案例
几种重载构造器的使用案例
StringBuilder sb1 =new StringBuilder();//#1
StringBuilder sb2=new StringBuilder("123");//#2
StringBuilder sb3=new StringBuilder(123);//#2
说明:在StringBuilder类重载的三种构造器中都调用了父类abstractStringBuilder重载的构造器,在StringBuilder类重载的三种构造器中传参,实际上都是在指定继承于abstractStringBuilder父类中的char类型数组的长度
#1 :调用StringBuilder类中的空参构造器,在调用abstractStringBuilder父类的构造器时默认传入16,即char类型value数组的长度为16.
#2:调用StringBuilder类中的形参为string类型的构造器,在调用abstractStringBuilder父类的构造器时传入该string类型字符串的长度string.length()+16,即char类型value数组的长度为string.length()+16.
#3:调用StringBuilder类中的形参为int类型的构造器,在调用abstractStringBuilder父类的构造器时传入该int类型数据,即char类型value数组的长度为该int类型数据值.
append()方法的使用
说明:对于string类型的字符串,在实现拼接操作时可以使用“+”连接符、concat()方法、join()方法(join()方法用于多个字符串或字符串数组按照指定字符串逐个拼接)
这三个方法的使用都不会改变原字符串,而是返回一个新的字符串(原因基于对string类型字符串在内存中的存储方式的理解,在string、StringBuilder和StringBuffer类的区别一文中已经详细描述,此处不在赘述)
String str="x";
str=str+"a";
str=str.concat("b");
System.out.println(str);
String str1="w";
str=str.join("@", str,str1);
System.out.println(str);
xab
xab@w
StringBuilder类中append()方法的具体使用:在原字符串尾部直接追加一个字符串或字符,改变原字符串
//append()方法的使用
StringBuilder sb =new StringBuilder("天王");
sb.append("盖地").append('虎');
System.out.println(sb);
天王盖地虎
replace()方法的使用
说明:string类中replace()方法:将指定原字符串中的子字符串或字符替换为指定的字符串或字符。不会改变原字符串,而是返回一个新的字符串
//string类中replace()方法的使用
String str="天王盖地虎";
str=str.replace("天王", "地霸").replace('虎', '狐');
System.out.println(str);
地霸盖地狐
StringBuilder类中replace()方法的具体使用:将从指定启使下标开始到指定结尾下标(不含尾下标)的子字符串替换为指定字符串。
//replace()方法的使用
StringBuilder sb =new StringBuilder("天王盖地虎");
sb.replace(1, 3, "@@@");
System.out.println(sb);
天@@@地虎
delete()方法的使用
说明:将从指定启使下标至指定结尾下标(不含尾下标)的子字符串删除
//delete()方法的使用
StringBuilder sb=new StringBuilder("天王盖地虎");
sb.delete(1, 3);
System.out.println(sb);
天地虎
deletecharAt()方法的使用
说明:将指定下标的字符删除
//deletecharAt()方法的使用
StringBuilder sb=new StringBuilder("天王盖地虎");
sb.deleteCharAt(0);
System.out.println(sb);
王盖地虎
insert()方法的使用
说明:在指定下标位置插入字符串、字符、布尔值等
//insert()方法的使用
StringBuilder sb=new StringBuilder("天王盖地虎");
sb.insert(3, "@").insert(4, '$').insert(0, true);
System.out.println(sb);
true天王盖@$地虎
reverse()方法的使用
说明:将原字符串逆序
//reverse()方法的使用
StringBuilder sb=new StringBuilder("天王盖地虎");
sb.reverse();
System.out.println(sb);
虎地盖王天
StringBuilder() | 构造一个空的字符串构造器 |
int length | 返回构建器或缓冲器中的代码单元数量 |
StringBuilder append(String str) | 追加一个字符串并返回this |
StringBuilder append(char c) | 追加一个代码单元并返回this |
StringBuilder appendCodePoint(int cp) | 追加一个码点,并将其转换为一个或两个代码单元并返回this |
void setCharAt | 将第i个代码单元设置为c |
StringBuilder insert(int offset,String str) | 在offset位置插入一个字符串并返回this |
StringBuilder insert(int offset,char c) | 在offset位置插入一个代码单元并返回this |
StringBuilder delete(int startIndex,int endIndex) | 删除偏移量从startIndex到endIndex-1的代码单元并返回this |
String toString() | 返回一个与构造器或缓冲器内容相同的字符串 |