哪位朋友能否讲解一下:
StringBuffer( ); /*分配16个字符的缓冲区*/这个缓冲区表示什么?16个字符又表示什么 ?(16个字符到底指多少个字符,或者说占多少位)

解决方案 »

  1.   

    buffer的初始化大小,不必关心。下面是JDK中的说明,我个人觉得append很常用线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。 例如,如果 z 引用一个当前内容为 "start" 的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含 "startle",而 z.insert(4, "le") 将更改字符串缓冲区,使之包含 "starlet"。 通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 当发生与源序列有关的操作(如源序列中的追加或插入操作)时,该类只在执行此操作的字符串缓冲区上而不是在源上实现同步。 每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
      

  2.   

    我只把我理解的说出来。。
    在程式中有某些字串是常常需要被更動時,若使用 String 便很不方便,常常需產生不同的字串物件。
    此時 JAVA 提供 StringBuffer 的類別供使用以更動字串的內容,以利於各種操作 。
      

  3.   

    二楼讲的太深奥,一点看不懂!!(在下愚民一个,不过,还是谢谢呵)
    三楼讲的很好,全听懂了,不过,可惜,到紧要的地方,就没了!!哭能不能举个例子讲解一下String与StringBuffer的区别,以及关于“
    只要字符串缓冲区所包含的字符序列的长度没有超出此容量”这个容量到底指多少呀!!!
      

  4.   

    String是固定不可变的
    StringBuffer适用于可变的字符串//这个容量到底指多少呀!!!
    默认的容量或你指定的容量(字符数)
      

  5.   

    String str = new String();
    StringBuffer strbuf = new StringBuffer();
    str = "122345";
    strbuf.append("1");
    strbuf.append("2");
    strbuf.append("3");
    strbuf.append("4");
    strbuf.append("5");
    System.out.println(str);
    System.out.println(strbuf.toString());
    看看结果了,这个比较直接阿。还有别的方法自己试试,体会一下了赫赫
      

  6.   

    16个字符就是16个字符咯,占大小32bytes。String和StringBuffer的区别,上面都已经说了。我举个例子吧String s="abcd";
    String t="efg";
    s+=t;上面的语句共创建了3个String对象,它们的内容分别是“abcd”、“efg”和“abcdefg”,这三个对象什么时候消失,就要由jvm的gc机制决定了,按照jvm的说法,“abcd”这个对象不再存在引用了,就应该可以被回收了。因此,如果你的程序中存在许多改变字符串内容的语句,jvm也要相应地创建新的字符串对象,再由gc回收,会影响程序的性能,所以java提供了一个可变内容的字符串对象,就是StringBuffer。StringBuffer s=new StringBuffer("abcd");
    String t="efg";
    s.append(t);上面就至创建了一个StringBuffer对象和一个String对象。
      

  7.   

    我同意楼上的说的
    使用字符串连接时,会创建多个String对象,而使用StringBuffer只创建一个StringBuffer对象
      

  8.   

    yingge(盼胖) ( ) 信誉:100 
    说的真好~~~感动ING!!!!完全明白了!
    可以做个朋友吗??我的E_mail:[email protected]
    你的E呢,要不我给你E吧!!!!送分~~
      

  9.   

    送分不必了,留着分问更有用的问题吧,email已经给你发短消息了。