CSDN博客

img wh25257758

string和stringbuffer的区别

发表于2008/9/30 20:32:00  459人阅读

分类: JAVA基础

         String为不可变字符,而StringBuffer是可变字符是可以动态添加的.

         注意一点....速度区别

                   在String中对"+"进行了重写,这样可以实现如"test" + "test1"这样的操作...

                    在内存中实际上是生成了一份test的拷贝和一份test1的拷贝然后在复制给另外一个变量....所以这种操作速度很慢..

       而StringBuffer则不是....

 

     另外一个问题.....字符串的比较....

 

     如:   String str1 = new String("test");

             Stirng  str2 = new String("test");

 

             在使用str1.equals(str2)时  返回为true;

为什么呢.? 因为在String中重写了Object的equals方法....

 

             而在StringBuffer中

             StringBuffer   buff1 = new StringBuffer("Test");

             StringBUffer  buff2 = new StringBuffer("Test");

 

             在使用buff1.equals(buff2)时返回为false;

为什么呢.? 因为这里的equals来自Object中,在StringBuffer中并没有对equals进行重写...

          

            是否可改动的区别:

  1. public class demo {
  2.     public static void stringChanged(String str) {
  3.          str = str + "changed";
  4.     }//企图改变不可变的字符串str
  5.     public static void bufferChanged(StringBuffer buff) {
  6.          buff = buff.append("changed");
  7.     }//改变字符流buff
  8.     public static void main(String[] args) {
  9.          String str = new String("demo");
  10.          StringBuffer buff = new StringBuffer("demo");
  11.          stringChanged(str);
  12.          bufferChanged(buff);
  13.          System.out.println(str + " " + buff);
  14.     }
  15. }
  16. 结果输出为: demo demochanged

     从上面的例子可以看出String与StringBuffer的区别.

 

    

     在Core Java中提到在不关心字符串处理效率的情况下,可以不适用StringBuffer而才用StringBuffer...

 

       

0 0

相关博文

我的热门文章

img
取 消
img