好像没有什么区别
如果发送很多字符的话StringBuffer效率高一些。说得不知道对不对:)

解决方案 »

  1.   

    如果需要动态扩展,用StringBuffer,它提供append方法,而String 是没有的
      

  2.   

    有区别,String是定长的一旦定义,长度就不能改变。而stringbuffer是不定长的,可以通过append等进行操作,
    你要想改变string的长度,只能通过重新复制,相当于把string指向了新的地址空间。而stringbuffer 都是在同一地址空间操作。
      

  3.   

    他们的区别是很大的,它们是两个独立的类,可以这么说吧,除了名字有些相似,完全不相干.String类是不可改变的,如果你更改了String类的实例,那么以前的就“不存在了”,所指向的是一个新的实例。而StringBuffer类是可以更改的。
        看如下例子,体会这一点:
            String s1="Hello";
            String s2="Hello";
            if(s1==s2) 
                System.out.println("Equal"); 
            else 
                System.out.println("Not equla");
        这个程序片断将输出Equal,原因是String类的实例是不能更改的.在生成第2个实例时它发现在缓冲池中已经有了"Hello"字符串,于是它就直接索引到这个字符串. 
        然而如果,你将第二行代码改为:
            String s2 = new String("Hello");
    再运行结果将是Not equal,因为更换了一个构造器形式,在生成第二个实例时,它就不在缓冲池中索引了,而是直接在内存中构造这样一个对象.因此,其句柄的值是不同的.
        也就是说,当你更改了String类的实例,那么其句柄索引的将是在Heap Memory的另外一个位置的对象,以前的就不能再索引到了.
        但是,StringBuffer类却不是如此,如果你更改了它的实例,但是在Heap Memory的缓冲池中,索引的是同一个实例.即更改了实例,但句柄的只是不变的,它是可以更改的!
      

  4.   

    两者都是对字符串进行操作的
    String类是基本的字符串类,只能用来处理简单的字符串
    StringBuffer类可以动态的进行扩展好像在处理上,对于String类,一旦创建了实例,系统就分配内存空间
    StringBuffer类可以不分配内存空间,在程序执行的时候再根据需要分配