StringBuffer在Java中有什么用????

解决方案 »

  1.   

    StringBuffer是一个类似字符串的类,是一种可以动态改变的字符串,String是final类型的一旦创建之后就不可以在改变,如果要实现"a"+"b"就要另外开辟一个空间来存放"ab"而不是之间把b加到a的后面,这样效率非常低的,StringBuffer的append()方法就是解决这个问题了,a.append(b)就是之间把b加到a的后面,这样实现的效率就高的多。另外StringBuffer类中有很多String中没有的方法,例如reverse()用来反转字符串,delete和Insert方法用来插入和删除某个子字符串。总之呢,你就把它看成一个可以动态CRUD的字符串就好了。
      

  2.   

    String类代表的是一个不可变的字符序列 
    它首先分配另外一块内存,把s1的内容赋值到前面,s2的内容赋值到后面
    再把s1重新指向这块内存(效率不高)
    StringBuffer比这个效率高:重新在后面开辟内存,插入删除也非常方便
      

  3.   

     StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 
             所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。         在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。
      

  4.   

    参考《thinking in java 》 I/O 输入输出这一节……
      

  5.   

    StringBuffer 类里的内容修改比String 类型要方便些,直接append添加delete删除就是,但是String 类型就不可以
      

  6.   

    StringBuffer虽然在字符串修改时效率高
    但是
    String="abc"+"def"+.....;的方式就不好说了
      

  7.   

    就是操作字符串效率比String高。
      

  8.   

    String="abc"+"def"+.....; 编译后会优化成String = "abcdef....";
    StringBuffer.append("abc").append("def")....;
    应该不会优化
    感觉是画蛇添足了
      

  9.   

    使用它效率比较高比String  经常出面试题
      

  10.   

    String="abc"+"def"+.....; 编译后会优化成String = "abcdef....";
    StringBuffer.append("abc").append("def")....;
    效率当然不同了,你用System类计算一下,来个For循环,次数设大点时间就是不同的,StringBuffer效率更高
      

  11.   

    当然,我只指 String="abc"+"def"+.....; 
    与StringBuffer.append("abc").append("def")....;这两种之间的对比,前一种显然更好
    如果是用循环的方式,StringBuffer的效率肯定要高几十倍
      

  12.   

    StringBuffer的字符串的修改上是要比String高,因为String的修改其实也是用StringbuBufer实现的,不过String的安全性更高,因为它是final的,这也许是String存在原因吧
      

  13.   

    执行它的toString方法后,跟String一样啦。
    它的字符串拼接效率要高于String.
      

  14.   

    String是final类型的一旦创建之后就不可以在改变,如果要实现"a"+"b"就要另外开辟一个空间来存放"ab"而不是之间把b加到a的后面,这样效率非常低的,StringBuffer的append()方法就是解决这个问题了,a.append(b)就是之间把b加到a的后面,这样实现的效率就高的多。另外StringBuffer类中有很多String中没有的方法,例如reverse()用来反转字符串,delete和Insert方法用来插入和删除某个子字符串。总之呢,你就把它看成一个可以动态CRUD的字符串就好了。