StringBuffer()的用法!! 哪位朋友能否讲解一下:StringBuffer( ); /*分配16个字符的缓冲区*/这个缓冲区表示什么?16个字符又表示什么 ?(16个字符到底指多少个字符,或者说占多少位) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 我只把我理解的说出来。。在程式中有某些字串是常常需要被更動時,若使用 String 便很不方便,常常需產生不同的字串物件。此時 JAVA 提供 StringBuffer 的類別供使用以更動字串的內容,以利於各種操作 。 二楼讲的太深奥,一点看不懂!!(在下愚民一个,不过,还是谢谢呵)三楼讲的很好,全听懂了,不过,可惜,到紧要的地方,就没了!!哭能不能举个例子讲解一下String与StringBuffer的区别,以及关于“只要字符串缓冲区所包含的字符序列的长度没有超出此容量”这个容量到底指多少呀!!! String是固定不可变的StringBuffer适用于可变的字符串//这个容量到底指多少呀!!!默认的容量或你指定的容量(字符数) 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());看看结果了,这个比较直接阿。还有别的方法自己试试,体会一下了赫赫 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对象。 我同意楼上的说的使用字符串连接时,会创建多个String对象,而使用StringBuffer只创建一个StringBuffer对象 yingge(盼胖) ( ) 信誉:100 说的真好~~~感动ING!!!!完全明白了!可以做个朋友吗??我的E_mail:[email protected]你的E呢,要不我给你E吧!!!!送分~~ 送分不必了,留着分问更有用的问题吧,email已经给你发短消息了。 java反编译错误,求解!!!!! HashMap的迭代器问题,小郁闷 紧急!打成jar包之后的相对路径问题 请教JAVA高手..如何学好JAVA?起步时看些什么书比较好???散分100 招聘一个java Swing兼职,时间是两个星期(北京). 有谁知道这个正则表达式这个特殊替换的?? java调用本地方法出错,急,在线等。 关于“.”目录和构造器 那位大哥能给我一个组播的例子!(在线等待) import带来的麻烦! 急求帮助解决javascript的问题 查找List里的元素,删除重复的,怎么实现
在程式中有某些字串是常常需要被更動時,若使用 String 便很不方便,常常需產生不同的字串物件。
此時 JAVA 提供 StringBuffer 的類別供使用以更動字串的內容,以利於各種操作 。
三楼讲的很好,全听懂了,不过,可惜,到紧要的地方,就没了!!哭能不能举个例子讲解一下String与StringBuffer的区别,以及关于“
只要字符串缓冲区所包含的字符序列的长度没有超出此容量”这个容量到底指多少呀!!!
StringBuffer适用于可变的字符串//这个容量到底指多少呀!!!
默认的容量或你指定的容量(字符数)
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());
看看结果了,这个比较直接阿。还有别的方法自己试试,体会一下了赫赫
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对象。
使用字符串连接时,会创建多个String对象,而使用StringBuffer只创建一个StringBuffer对象
说的真好~~~感动ING!!!!完全明白了!
可以做个朋友吗??我的E_mail:[email protected]
你的E呢,要不我给你E吧!!!!送分~~