黑马程序员:StringBuffer与StringBuilder的介绍及区别

来源:互联网 发布:csgo画面优化设置 编辑:程序博客网 时间:2024/06/14 02:05

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

StringBuffer是字符串缓冲区,是一个容器,有CURD功能(create,update,read,delete)增删改查

特点:
1.长度可以变化
2.可以直接操作多个数据类型
3.最终会通过toString方法变成字符串
当数据长度、类型都不确定,但最终是字符串的时候,可以用StringBuffer
1.存储
StringBuffer append():将制定数据作为参数添加到已有数据结尾处
StringBuffer insert(index,data):可以将数据插入到制定index位置
方法调用链:操作之后返回来还是同一个对象,方法可以继续调用
StringBuffer sb = new StringBuffer();
sb.append("abc").append(true).append(32).insert(1,"qq"); //aqqbctrue32


2.删除
StringBuffer delete(int start, int end);删除缓冲区中的数据,删除的数据包含start,不包含end
StringBuffer deleteCharAt(int index);删除指定位置的字符
sb.delete(0,sb.length()); 清空缓冲区


3.获取
char charAt(int index); 返回指定字符
int indexOf(String str); 返回第一个str字符串索引值
int lastIndexOf(String str); 返回倒数第一个str字符串索引值
int length(); 获取长度
String substring(int start, int end); 获取子串

4.修改
StringBuffer replace(int start, int end, String str); //包含头不包含尾,把制定位置范围的字符串替换成str
上面的方法要注意和String的有区别:String的是 replace(oldstr,newstr);
void setCharAt(int index, char ch); 修改指定位置的字符

5.反转
StringBuffer reverse();


6.将缓冲区中指定数据存储到指定字符数组中
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);
示例:
StringBuffer sb = new StringBuffer("abcdef");
char[] chs = new char[6];
sb.getChars(1,4,chs,1); 结果chs = {'','b','c','d','',''}

JDK1.5版本之后出现了StringBuilder
StringBuffer是线程同步,相当于有锁
StringBuilder是线程不同步,效率高,支持StringBuffer所有方法
建议开发使用StringBuilder,特别是单线程,多线程可以自己加锁


JAVA升级的三个因素:
1.提高效率
2.简化书写
3.提高安全性

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
原创粉丝点击