String和StringBuffer

一、String和StringBuffer添加字符的效率PK

String s="abc";
StringBuffer sb=new StringBuffer("abc");
s+="xyz";
sb.append("xyz");

  +操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使用StringBuffer类就避免了这个问题,可预先分配指定长度的内存块建立一个字符串缓冲区,这样使用StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得多。

二、+操作符的背后真实的故事

String str = new String("welcome to ");
str += "here";

代码处理实际步骤:

  1. 建立一个StringBuffer,然后调用append()方法。
  2. 最后调用StringBuffer的toSting()方法.
StringBuffer sb=new StringBuffer(str);
sb.append("here");
str=sb.toString();

这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上远远的低于StringBuffer。

总结:String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值。如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高

posted @ 2015-10-21 22:00  好人难寻  阅读(123)  评论(0编辑  收藏  举报