您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第11章:Java常用类库】_StringBuffer
发布时间:2020-12-23 14:36:50编辑:雪饮阅读()
StringBuffer
StringBuffer类似于String,只是String字符串拼接用“+”连字符,而StringBuffer没有直接赋值的方式最基础定义单元就是append方法,即追加,那么追加支持字符串、数字、字符、布尔等类型的数据,并且支持连缀操作。
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
bf.append("字符串").append(",支持连缀操作,").append(',').append(true).append(1);
System.out.println(bf);
}
}
D:\>javac Hello.java
D:\>java Hello
字符串,支持连缀操作,,true1
StringBuffer传递
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
bf.append("字符串").append(",支持连缀操作,").append(',').append(true).append(1);
fun(bf);
}
public static void fun(StringBuffer s){
s.append("StringBuffer传递后仍可操作追加");
System.out.println(s);
}
}
D:\>javac Hello.java
D:\>java Hello
字符串,支持连缀操作,,true1StringBuffer传递后仍可操作追加
insert
StringBuffer提供insert方法,该方法接收一个偏移量,用于从StringBuffer字符串的偏移量处插入内容
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
bf.append("字符串").insert(0,"kasumi");
System.out.println(bf);
}
}
D:\>javac Hello.java
D:\>java Hello
kasumi字符串
length
StringBuffer提供length用于获取StringBuffer对象实例目前的内容长度
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
bf.append("字符串").insert(bf.length(),"kasumi");
System.out.println(bf);
}
}
D:\>javac Hello.java
D:\>java Hello
字符串kasumi
reverse与toString
StringBuffer提供reverse方法用于对StringBuffer内容进行反转。StringBuffer提供toString方法用于将StringBuffer内容转换为普通字符串。
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
String str=bf.append("字符串").insert(bf.length(),"kasumi").reverse().toString();
System.out.println(str);
}
}
D:\>javac Hello.java
D:\>java Hello
imusak串符字
replace
StringBuffer提供replace方法接收待替换内容查找的开始偏移量与结束偏移量以及替换之后的目标内容。
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
String str=bf.append("kasumi").append("snowDrink").replace(0,6,"snowDrink").toString();
System.out.println(str);
}
}
D:\>javac Hello.java
D:\>java Hello
snowDrinksnowDrink
substring
StringBuffer提供substring方法接收两个偏移量,用于截取两个偏移量之间的内容。
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
String str=bf.append("kasumi").append("snowDrink").substring(0,6);
System.out.println(str);
}
}
D:\>javac Hello.java
D:\>java Hello
kasumi
delete
StringBuffer提供delete方法接收两个偏移量,用于删除两个偏移量之间的内容
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
String str=bf.append("kasumi").append("snowDrink").delete(0,6).toString();
System.out.println(str);
}
}
indexOf
StringBuffer提供indexOf方法接收一个子串,用该子串在StringBuffer的内容中查找,若能找到则返回偏移量,若找不到则返回-1
public class Hello{
public static void main(String args[]){
StringBuffer bf=new StringBuffer();
if(bf.append("kasumi").append("snowDrink").indexOf("kasumi")!=-1){
System.out.println("查找到kasumi");
}
}
}
D:\>javac Hello.java
D:\>java Hello
查找到kasumi
StringBuffer应用场景
StringBuffer应用于String的频繁操作,如果String频繁操作,若不用StringBuffer,则传统的做法如:
public class Hello{
public static void main(String args[]){
String str="";
for(int x=0;x<10;x++){
str+=x;
}
System.out.println(str);
}
}
D:\>javac Hello.java
D:\>java Hello
0123456789
根据String赋值与堆内存之间的关系可以知道这里不断的断开与原来堆内存的连接并不断创建新的堆内存,然后删除旧的堆内存。性能可谓非常耗损。
如果改用StringBuffer则如:
public class Hello{
public static void main(String args[]){
StringBuffer sb=new StringBuffer();
for(int x=0;x<10;x++){
sb.append(x);
}
System.out.println(sb);
}
}
这样操作不会像是String那样频繁的去消耗堆内存,另外这里可以直接打印StringBuffer对象实例,也是因为默认走了toString方法。这样的实现方式更合理些。
关键字词:java,StringBuffer