String和StringBuffer 的区别

一、String是可变类,StringBuffer是不可变类 。

package test;
/**
 * Created by Lenovo on 2015/2/9.
 */
public class Spliter
{
    public static void main(String[] args) {
      String s=new String("    hello world   " );
        s.toUpperCase();
        s.trim();
        System.out.println(s.toString());
        /*
        输出结果是     hello world   (前后有空格)
        String 创建后它的内容无法改变,toUpperCase,trim等实际是创建并返回一个带有改变后内容的新的字符串对象,toString返回当前的实例本身的引用  *、
         */

      StringBuffer sb= new StringBuffer("     hello ");
        sb.append("world     ");
        sb.insert(0, "yoyo");
        System.out.println(sb.toString());

         /*
        输出结果是 yoyo   hello world
        StringBuffer 的 insert appender,replaceAll等会改变字符缓冲区中的内容 toString 返回一个当前StringBuffer的缓冲区中内容的新的String对象的引用。

         */
    }
}

 

二、String类覆盖了equal方法,StringBufffer没有

 1 package test;
 2 
 3 /**
 4  * Created by Lenovo on 2015/2/9.
 5  */
 6 public class Spliter
 7 {
 8     public static void main(String[] args) {
 9         String s1=new String("hello world" );
10         String s2=new String("hello world" );
11         System.out.println(s1==s2);     // 返回false
12         System.out.println(s1.equals(s2));  // 返回true
13 
14         StringBuffer s3=new StringBuffer("hello world" );
15         StringBuffer s4=new StringBuffer("hello world" );
16         System.out.println(s1==s2);     // 返回false
17         System.out.println(s3.equals(s4));  // 返回false
18     }
19 }

 

三、String对象之间可以用’+‘ 连接 ,StringBuffer不能 。

 1 package test;
 2 
 3 /**
 4  * Created by Lenovo on 2015/2/9.
 5  */
 6 public class Spliter
 7 {
 8     public static void main(String[] args) {
 9         String s1=new String("hello world" );
10         String s2=new String("hello world" );
11         String ss=s1+s2;
12         System.out.println(ss.toString());  //返回 hello worldhello world
13 
14         StringBuffer s3=new StringBuffer("hello world" );
15         StringBuffer s4=new StringBuffer("hello world" );
16         StringBuffer ss2=s1+s2;  //编译出错
17         System.out.println(ss2.toString());
18 
19 
20     }
21 }

 

posted @ 2015-02-09 15:19  galaxy77  阅读(481)  评论(0编辑  收藏  举报