Eason-S

导航

String和StringBuffer

  String 对一串字符进行操作,是final类,不能被继承,是不可变类,一旦被创建,就不能修改它的值,对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。

  StringBuffer 也是对一串字符进行操作,但是可变类,每次修改都会改变对象自身。它只能通过构造函数来建立,不能通过付值符号对他进行赋值(如:sb = "welcome to here!";//error)。另外由于StringBuffer是线程安全的,所以在多线程程序中也可以很方便的进行使用。

 

  字符串连接操作中StringBuffer的效率要比String高

  String str = new String("welcome to ");
  str += "here";
  上述过程的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后再StringBuffer toSting();这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣,并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值。这样原来的对象就没用了,就要被垃圾回收,这也是要影响性能的。

 

 1、StringBuffer对象的初始化

  StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。

  例如:

  StringBuffer s = new StringBuffer();  这样初始化出的StringBuffer对象是一个空的对象。

  如果需要创建带有内容的StringBuffer对象,则可以使用:StringBuffer s = new StringBuffer(“abc”); 这样初始化出的StringBuffer对象的内容就是字符串”abc”。

  需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

         StringBuffer s = “abc”;               //赋值类型不匹配

         StringBuffer s = (StringBuffer)”abc”;    //不存在继承关系,无法进行强转

  StringBuffer对象和String对象之间的互转的代码如下:

         String s = “abc”;

         StringBuffer sb1 = new StringBuffer(“123”);

         StringBuffer sb2 = new StringBuffer(s);   //String转换为StringBuffer

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

 2、StringBuffer的append方法

  public StringBuffer append(boolean b)

  该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变

 3、StringBuffer的deleteCharAt方法

  public StringBuffer deleteCharAt(int index)

  该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。

 4、StringBuffer的insert方法

  public StringBuffer insert(int offset, boolean b)

  该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。

 5、StringBuffer的reverse方法

  public StringBuffer reverse()

  该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。

 6、StringBuffer的setCharAt方法

  public void setCharAt(int index, char ch)

  该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。

 7、StringBuffer的trimToSize方法

  public void trimToSize()

  该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。

posted on 2016-05-20 21:14  Eason_S  阅读(410)  评论(0编辑  收藏  举报