string和stringbuffer的区别

原创 2008年09月30日 20:32:00

         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...

 

       

Java基础之String,StringBuffer与StringBuilder的区别及应用场景

1 概述(1)String 字符串常量; (2)StringBuffer 字符串变量(线程安全),是一个容器,最终会通过toString方法变成字符串; (3)StringBuilder 字符串变...
  • chenliguan
  • chenliguan
  • 2016年07月14日 18:35
  • 5769

Java String为什么是不可变类,StringBuffer与StringBuilder区别

熟悉Java的都知道String类是不可变,但String类为什么设计成不可变类,如何做到不可变没有仔细想过。 String为什么设计成不可变类? 1.Java字符串池的设计方式。     Strin...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年03月10日 15:15
  • 2015

Java中String、StringBuffer和StringBuilder的区别和堆栈内存分配

Java中的String类是一个很常用,但最不注意其细节的类,因此大多数面试会那这个类做文章。比如String str = new String("hello");开辟了几个内存空间,String和S...
  • fengshizty
  • fengshizty
  • 2014年11月25日 17:08
  • 4353

String StringBuffer和StringBuilder区别之源码解析

  • 2017年12月07日 20:08
  • 90KB
  • 下载

string和StringBuffer的区别

  • 2012年01月05日 09:48
  • 15KB
  • 下载

String、StringBuilder和StringBuffer的区别

  • 2011年06月09日 09:19
  • 55KB
  • 下载

string与stringbuffer的区别

  • 2012年08月12日 22:16
  • 18KB
  • 下载

String、StringBuffer与StringBuilder之间区别

  • 2017年10月30日 16:20
  • 3KB
  • 下载

String和StringBuffer的区别

  • 2012年10月26日 13:53
  • 4KB
  • 下载

String 和StringBuffer的区别

  • 2010年01月07日 11:38
  • 54KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:string和stringbuffer的区别
举报原因:
原因补充:

(最多只允许输入30个字)