string和stringbuffer的区别

         String为不可变字符,而StringBuffer是可变字符是可以动态添加的.

         注意一点....速度区别

                   在String中对"+"进行了重写,这样可以实现如"test" + "test1"这样的操作...

                    在内存中实际上是生成了一份test的拷贝和一份test1的拷贝然后在复制给另外一个变量....所以这种操作速度很慢..

       而StringBuffer则不是....

 

     另外一个问题.....字符串的比较....

 

     如:   String str1 = new String("test");

             Stirng  str2 = new String("test");

 

             在使用str1.equals(str2)时  返回为true;

为什么呢.? 因为在String中重写了Object的equals方法....

 

             而在StringBuffer中

             StringBuffer   buff1 = new StringBuffer("Test");

             StringBUffer  buff2 = new StringBuffer("Test");

 

             在使用buff1.equals(buff2)时返回为false;

为什么呢.? 因为这里的equals来自Object中,在StringBuffer中并没有对equals进行重写...

          

            是否可改动的区别:

  1. public class demo {
  2.     public static void stringChanged(String str) {
  3.          str = str + "changed";
  4.     }//企图改变不可变的字符串str
  5.     public static void bufferChanged(StringBuffer buff) {
  6.          buff = buff.append("changed");
  7.     }//改变字符流buff
  8.     public static void main(String[] args) {
  9.          String str = new String("demo");
  10.          StringBuffer buff = new StringBuffer("demo");
  11.          stringChanged(str);
  12.          bufferChanged(buff);
  13.          System.out.println(str + " " + buff);
  14.     }
  15. }
  16. 结果输出为: demo demochanged

     从上面的例子可以看出String与StringBuffer的区别.

 

    

     在Core Java中提到在不关心字符串处理效率的情况下,可以不适用StringBuffer而才用StringBuffer...

 

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值