您当前的位置:首页 > 生活 > 内容

stringbuffer(StringBuffer的使用方法)

本文目录

  • StringBuffer的使用方法
  • String类和StringBuffer类的区别
  • String和StringBuffer有什么区别啊
  • StringBuffer和StringBuilder的区别
  • string,stringbuffer和stringbuilder的区别
  • StringBuffer是什么
  • String 和StringBuffer的区别
  • StringBuffer是什么意思 在java中
  • String 和StringBuffer的区别是什么
  • string和stringbuffer有什么区别

StringBuffer的使用方法

你那样定义错误了。。 数组的话要用 StringBuffer buffer =new StringBuffer; 要定义大小的,前面也要是数组格式。 buffer=new StringBuffer(“a“); buffer=new StringBuffer(“b“); buffer=new StringBuffer(“c“); buffer=new StringBuffer(“d“); 存值要这么放,是stringbuffer类型的不是string类型。 串起来输出的话就得循环了。。就是楼上那样的。。

String类和StringBuffer类的区别

  String与StringBuffer的区别

  • String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独字符,所以在JDK文档中称String类的对象是不可改变的。

  • 1)StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使用StringBuffer类就避免了这个问题。

    2)StringBuffer是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

  •   官方文档说明:

      

      

    String和StringBuffer有什么区别啊

    StringBuffer是一个具有对象引用传递特点的字符串对象。StringBuffer对象可以调用其方法动态的进行增加、插入、修改和删除操作,且不用像数组那样事先指定大小,从而实现多次插入字符,一次整体取出的效果,因而操作字符串非常灵活方便。一旦通过StringBuffer生成最终想要的字符串,就可调用它的toString方法将其转换为一个String对象 追问: StringBuffer调用它的toString方法指向一个地址,最后还是变成了一个String对象,为什么在不直接用String呢?如:pstmt = con.prepareStatement(sql.toString());和String sql1 = “select * from ...“;pstmt = con.prepareStatement(sql1); 回答: String的操作都是改变赋值地址而不是改变值操作 String 类和 StringBuffer 类的比较:相同: 1: 都是用来处理字符串的 2:都提供了 length() , toString() ,charAt() , substring() 方法 ,用法一样 3:对于String 类和 StringBuffer 类,字符在字符串中的索引位置都从 0 开始。 4:两个类的 substring( int beginIndex, int endIndex)方法都是用来截取字符串,且范围都是从beginIndex 开始, 到 endIndex--1 为止。 不同: 1: String 类 是不可变类 , StringBuffer 类 是可变类 String 类提供的 比如 substring ,replace 等方法 都不会更改字符串内容,实际上是创建一个方法所浮于特性的新字符串。 返回一个改变后内容的新字符串。 StringBuffer 的 appeng(),等方法都会改变字符缓冲区中的字符串内容。 2:String 类 覆盖了Object类的 equals()方法 StringBuffer类没有覆盖 3: 都覆盖了Object()类的 toString() 方法,实现不一样 String类的toString() 方法返回当前String实例本身的引用。 StringBuffer类的toString方法返回一个以当前StringBuffer的缓冲区中的所有字符串为内容的新的 String对象的引用。 4: String 对象可以用 操作符 “+ “ 进行连接 StringBuffer 不能 追问: 我懂了String sql =“hello word”;相当于String创建以后就有了空的字符,然后将字符串“hello word”赋值给它,得到新的字符串。StringBuffer类的toString方法类似于把创建后的空字符串改变成新的字符串,没有重新赋值。可以这样理解吗? 回答: 简单点说用StringBuffer主要是为了对字符进行增加、插入、修改和删除操作,而String 是操作完成后用来存储字符的。就好像说一块固态(String)的金砖,你想改变的的形状就的先融化成液态(StringBuffer),等形状确定以后再变成固态(String)。这个比方并不是很恰当,不过应该更好一点理解。 补充: 你的理解只能说没错,却也不完全正确。 追问: 感谢! 回答: 不客气,互相交流一下,我现在都很少用Java了,改行学C++

    StringBuffer和StringBuilder的区别

    StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringBuffer吧!先说一下集合的故事,HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也是如此,他们的原理和操作基本相同,区别在于StringBufferd支持并发操作,线性安全的,适 合多线程中使用。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。接下来,我直接贴上测试过程和结果的代码,一目了然:[java] view plain copy public class StringTest { public static String BASEINFO = “Mr.Y“; public static final int COUNT = 2000000; /** * 执行一项String赋值测试 */ public static void doStringTest() { String str = new String(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i 《 COUNT / 100; i++) { str = str + “miss“; } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + “ millis has costed when used String.“); } /** * 执行一项StringBuffer赋值测试 */ public static void doStringBufferTest() { StringBuffer sb = new StringBuffer(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i 《 COUNT; i++) { sb = sb.append(“miss“); } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + “ millis has costed when used StringBuffer.“); } /** * 执行一项StringBuilder赋值测试 */ public static void doStringBuilderTest() { StringBuilder sb = new StringBuilder(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i 《 COUNT; i++) { sb = sb.append(“miss“); } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + “ millis has costed when used StringBuilder.“); } /** * 测试StringBuffer遍历赋值结果 * * @param mlist */ public static void doStringBufferListTest(List《String》 mlist) { StringBuffer sb = new StringBuffer(); long starttime = System.currentTimeMillis(); for (String string : mlist) { sb.append(string); } long endtime = System.currentTimeMillis(); System.out.println(sb.toString() + “buffer cost:“ + (endtime - starttime) + “ millis“); } /** * 测试StringBuilder迭代赋值结果 * * @param mlist */ public static void doStringBuilderListTest(List《String》 mlist) { StringBuilder sb = new StringBuilder(); long starttime = System.currentTimeMillis(); for (Iterator《String》 iterator = mlist.iterator(); iterator.hasNext();) { sb.append(iterator.next()); } long endtime = System.currentTimeMillis(); System.out.println(sb.toString() + “builder cost:“ + (endtime - starttime) + “ millis“); } public static void main(String args) { doStringTest(); doStringBufferTest(); doStringBuilderTest(); List《String》 list = new ArrayList《String》(); list.add(“ I “); list.add(“ like “); list.add(“ BeiJing “); list.add(“ tian “); list.add(“ an “); list.add(“ men “); list.add(“ . “); doStringBufferListTest(list); doStringBuilderListTest(list); } } 看一下执行结果:2711 millis has costed when used String.211 millis has costed when used StringBuffer.141 millis has costed when used StringBuilder. I like BeiJing tian an men . buffer cost:1 millis I like BeiJing tian an men . builder cost:0 millis从上面的结果可以看出,不考虑多线程,采用String对象时(我把Count/100),执行时间比其他两个都要高,而采用StringBuffer对象和采用StringBuilder对象的差别也比较明显。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;如果要保证线程安全,自然是StringBuffer。从后面List的测试结果可以看出,除了对多线程的支持不一样外,这两个类的使用方式和结果几乎没有任何差别,

    string,stringbuffer和stringbuilder的区别

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:String S1 = “This is only a” + “ simple” + “ test”;StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);你会很惊讶的发现,生成 String S1 对象的速度简直太快了,而这个时候 StringBuffer 居然速度上根本一点都不占优势。其实这是 JVM 的一个把戏,在 JVM 眼里,这个String S1 = “This is only a” + “ simple” + “test”; 其实就是:String S1 = “This is only a simple test”; 所以当然不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的 String 对象的话,速度就没那么快了,譬如:String S2 = “This is only a”;String S3 = “ simple”;String S4 = “ test”;String S1 = S2 +S3 + S4;这时候 JVM 会规规矩矩的按照原来的方式去做在大部分情况下 StringBuffer 》 StringStringBufferJava.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append(“le“) 会使字符串缓冲区包含“startle”,而 z.insert(4, “le“) 将更改字符串缓冲区,使之包含“starlet”。在大部分情况下 StringBuilder 》 StringBufferjava.lang.StringBuildejava.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

    StringBuffer是什么

    String是不可变的类型,即创建一个String对象后,就不能修改这个String,平常使用的“aa“+“bb“生成“aabb“这个过程中,实际是创建了三个String对象:“aa“, “bb“, “aabb“StringBuffer是相对于String的一个可变的类型,StringBuffer可以在原对象上进行加长或缩短等修改操作。适用于需要大量连接字串或拼接处理字串的情况,相应的情况下就不宜使用String对象了。

    String 和StringBuffer的区别

    一、内部实现方式不同

    1、String:在进行字符串处理时,会生成新的对象。

    2、StringBuffer:在进行字符串处理时,不生成新的对象,在内存使用上要优于串类。

    二、使用情况不同

    1、String:用在固定的字符串,不经常对字符串进行更改的情况。

    2、StringBuffer:经常需要对一个字符串进行修改,例如插入,删除等操作,使用StringBuffer要更加适合一些。

    三、优势不同

    1、String:String类中没有用来改变已有字符串中的某个字符的方法

    2、StringBuffer:StringBuffer的类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用的StringBuffer类的 附加方法追加字符比字符串使用+操作符添加字符到一个已经存在的字符串后面有效率得多。

    参考资料来源:百度百科-StringBuffer

    参考资料来源:百度百科-string类

    StringBuffer是什么意思 在java中

    StringBuffer和String一样,都用来表示字符串。但是其内部实现机制和String不同,对StringBuffer对象的每一次修改都会改变其自身对象,而不是像String一样生成一个新的对象,所以StringBuffer在内存控制上要优于String。

    String 和StringBuffer的区别是什么

    String类代表字符串。StringBuffer一个类似于String的字符串缓冲区,但不能修改。String一次给内容StringBuffer可以分好几次给,也就是缓冲的意思。。String可以修改Stringbuffer不能//、就这些吧////

    string和stringbuffer有什么区别

    通过查看string的所有成员方法你可以发现对于string的任何操作都是返回的一个新的string实例,也就是说对于string的操作都是分配了新的内存空间去得到的。但对于stringbuffer你对它的操作如果可以在你设置的初始长度中解决,系统会在当前的stringbuffer中对应的内存空间执行你要的操作,而返回的stringbuffer仍然是前一个实例,而如果对stringbuffer的操作使得stringbuffer必须扩展它的缓冲区长度,则系统将会给你开辟一个新的stringbuffer实例


    声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

    上一篇: 女人喝红酒的简短唯美句子,女人喝红酒的唯美句子(红酒摇曳,微醺时光)

    下一篇: html源代码(12、在浏览器里怎样查看HTML网页的源代码.)



    猜你感兴趣

    推荐阅读

    网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号