StringBuilder&StringBuffer 常用方法

一.性质上与String的区别

StringBuilder和StringBuffer为可变字符串。

二.StringBuilder和StringBuffer的区别

StringBuilder线程不安全,效率高 一般使用他
StringBuffer 线程安全 效率低

三.StringBuilder和StringBuffer的创建

通过StringBuffer方法操作字符串时,字符串对象不变。
创建一个新的StringBffuer对象必须用new方法,不能直接引用字符串常量

StringBuffer sbf =new StringBuffer();	 //创建一个对象 无初始值
StringBuffer sbf2 =new StringBuffer(32);	//创建一个对象 初始容量为32个字符
StringBuffer s1 = new StringBuffer("abc");//创建一个对象 初始值是“abc”
System.out.println(Integer.toHexString(s1.hashCode())); 
System.out.println(s1);
	
s1.setCharAt(2, 'M');
System.out.println(Integer.toHexString(s1.hashCode()));
System.out.println(s1);

四.StringBuffer(StringBuilder)常用方法——与String相似的

StringBuilder str1 = new StringBuilder("abcdefgdef");
	//String中此方法参数可以为char或String类型,StringBuilder和StringBuffer只能为String
int a =          str1.indexOf("def");
int b =          str1.lastIndexOf("def", 3);
String str1 =    str1.substring(2);
String str2 =    str1.substring(2, 5);
int c  =         str1.length();
char d =         str1.charAt(4);

五.StringBuffer(StringBuilder)常用方法——独特的

StringBuilder s = new StringBuilder(); 
//用StringBuilder和for循环输出26个字母
for(int i=0;i<26;i++) {
	s.append((char)('a'+i));	//在字符串后添加新的字符
}

s.reverse();  //将字符串s倒序

s.setCharAt(5, '好');  //将5索引字符替换为“好
s.insert(2, "这个");  //在指定索引位置插入某一个字符 字符串;
	
s.insert(2, "这个").insert(7, "方法的").insert(13,'使').insert(15,'用');    //链式调用 核心就是 insert方法调用了 return this,把自己返回了
	
s.delete(25, 32).delete(25, 28);//删除某一区间 也可以链式调用 

s.replace(0, 3, "新字符串"); //将[0,3)区间的字符串替换 (对象不变)

s.deleteCharAt(4); //删除指定所以的字符


//应用
StringBuffer Asbf = new StringBuffer("古诗春晓");
Asbf.delete(0, 2);
System.out.println(Asbf);
Asbf.insert(1, "眠不觉");	
System.out.println(Asbf);
Asbf.append(",处处闻啼鸟。");
System.out.println(Asbf);

tip:append(), delete(),insert()都可以链式调用

六.Stringbuilder StringBuffer String之间的转换

String a = "String";
//将String转为StringBuiler和StringBuffer
StringBuilder sbd = new StringBuilder(a);
StringBuffer sbf = new StringBuffer(a);
	
//将StringBuilder和StringBuffer转为String
sbd.toString();
sbf.toString();
	
	
//将StringBuilder 转为 StringBuffer
StringBuilder sbd2 = new StringBuilder("String");
StringBuffer sbf2 = new StringBuffer(sbd2.toString());
	
//将StringBuffer 转为 StringBuilder
StringBuilder sbd3 = new StringBuilder(sbf2.toString());

七.Stringbuilder(StringBuffer)操作字符串后对象地址的问题

StringBuffer sbf = new StringBuffer("ABCDEFG");

String d= sbf.substring(0,2); 
System.out.println(d.hashCode());	//2081
System.out.println(sbf.hashCode());	//41359092
	//使用substring方法截取字符串,结果的对象不同。
	
	
StringBuffer e = sbf.replace(0, 2, "字符串");
System.out.println(e.hashCode());//41359092
System.out.println(sbf.hashCode());//41359092
	//使用replace,delete,append,insert,setCharAt方法修改字符串,结果的对象相同。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值