黑马程序员技术交流社区
标题: String和StringBuffer、StringBuilder [打印本页]
作者: 孙万利 时间: 2012-12-6 08:38
标题: String和StringBuffer、StringBuilder
Java升级三种情况:
1.提高效率
2.提高安全性
3.简化书写
String(字符串):
特性:一旦被初始化,就不能被改变
StringBuilder(线程不同步) 升级的结果(提高效率)
将StringBuilder实例用于多线程是不安全的。如需要这样的同步,建议使用StringBuffer;
单线程使用StringBuilder效率高;
StringBuffer(线程同步,安全的)
StringBuffer是字符串缓冲区
是一个容器(数据类型不确定,数据个数不确定,用StringBuffer比数组方便)
特点:
1.长度是可以变化的
2.可以直接操作多个数据类型(append 添加什么类型都可以)
3.最终会通过toString方法变成字符串
1.存储:
StringBuffer append():将制定数据作为参数添加到已有数据的结尾处
StringBuffer insert(index,数据):可以将数据插入制定在index位置
2.删除
StringBuffer delete(strat,end):删除缓冲区的数据,包含start,不包含end
StringBuffer deleteCharAt(index):删除指定位置的字符
3.获取
char charAt()
int indexOf(String str)
int lastIndexOf(String str)
int length()
String subString(int start,int end)
4.修改
StringBuffer replace(start,end,string)
void setCharAt(int index,char ch);
5.反转
StringBuffer reverse();
6.将缓冲区中指定数据,存储到指定字符数组中
void getChars(int srcBegin(字符串的起始位置),int srcEnd(字符串的结束位置),char[] dst,int dstBegin(字符数组的起始位置))
JDK1.5版本之后出现了StringBuilder
StringBuffer 是线程同步
StringBuilder是线程不同步(效率高)
以后开发建议使用StringBuilder
下面是一小段代码来体现上面的方法:
class StringBufferDemo
{
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append("abc").append(34).append("def");
//方法调用链 返回值为StringBuffer对象
sop(sb.toString());//返回结果为abc34def
sop(sb1.toString());//返回结果为abc34def
//sb.delete(1,3); sop(sb.toString());
//清空缓冲区 sb.delete(0,sb.length());
//删除单个元素 sb.deleteCharAt(2);
//sb.replace(1,3,"hello");//替换
//sb.setCharAt(2,'s');
//sop(sb.toString());
char[] ch = new char[6];
sb.getChars(0,4,ch,1);
for(int x=0;x<ch.length;x++)
{
sop("ch["+x+"]=:"+ch[x]);
}
}
public static void sop(String str)
{
System.out.println(str);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |