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

38.黑马程序员-String、StringBuffer、StringBuilder比较

2012-10-17 09:19 393 查看
------- android培训java培训、期待与您交流! ----------
一、StringBuffer
1.概念

String Buffer是字符串缓冲区、是一个容器(数据可以改变)。
而且长度是可以改变的。
可以直接操作多个数据类型。
最终会通过toString方法变成字符串。
定义:StringBuffer sb = new StringBuffer();

2.功能

CRUD
存储:

存储 StringBuffer append(数据):将指定作为参数添加到已有数据的结尾处。

StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append(34); //注意sb==sb1,指向同一个缓冲区。

插入StringBuffer insert(index,数据):可以将数据插入到指定index位置。

删除

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

获取

char charAt(int index)
int indexOf (String str)
int lastIndexOf(String str)
int length()
String substring (int start , int end)

修改

StringBuffer replace (start , end ,string)
void setCharAt(int index , char ch)

反转

stringBuffer reverse();

将缓冲区的数据存储到指定数组中,dst为目的。

void getchars(int srcBegin , int srcEnd, char[]dst, int dstBegin)

二、StringBuilder

概念: StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区

StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区

StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

三、StringBuffer与StringBuilder(JDK1.5)差别

StringBuffer是线程安全的可变字符序列,线程同步, StringBuilder不保证同步。

到底用哪一个?建议单线程用StringBuilder,多线程用StringBuffer。

一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的

四、总结

(1).如果要操作少量的数据用 = String
(2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: