您的位置:首页 > 产品设计 > UI/UE

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

2013-11-10 12:28 369 查看
----------------------
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: