String、StringBuffer 与StringBuilder

(接上文)

3、StringStringBuffer StringBuilder

String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)

看一个栗子:

用字符数组value创建一个String对象   private final String(char[] value)

1 char[] value = {"a","b","c","d"};

2 String str4 = new String(value);//相当于String str4 = new String("abcd");

 

字符串的本质是字符数组,因为有final修饰,所以String类的对象是不可改变的。所以每次修String对象的值时,实际上是生成了一个新的对象,而指针指向了新的String对象;所以经常改变内容的字符串最好不要用 String ,因为只要改变就会变成新的对象,创建对象的过程是很消耗性能的每次生成对象都会对系统性能产生影响

StringBuffer:如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。 字符串对象经常改变的情况下推荐使用 StringBuffer类。String的大多数方法StringBuffer都可以使用,除此之外还增加了String没有的插入和删除字符串的方法。

StringBuffer buf=new StringBuffer("abc");

String s1=buf.toString(); //转换为String

buf.append("abc");    //在字符串后面追加abc ,相当于String中 +“abc”

buf.insert(0,"abc");   //在开头位置插入abc 

buf.delete(0,5)      //删除下标从0到5且不包含5的字符

buf.setCharAt(1,’D’);    //则对象buf的值将变成”aDc”

StringBuilder  被设计用作 StringBuffer 的一个简易替换两者的方法基本相同由于没有对方法进行加同步锁,所以是非线程安全的。但在字符串缓冲区被单个线程使用的时候,处理的效率更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值