首頁  >  文章  >  Java  >  JAVA中String類別與StringBuffer類別的區別

JAVA中String類別與StringBuffer類別的區別

高洛峰
高洛峰原創
2017-01-21 16:31:321320瀏覽

在Java中有兩種字串的操作:String類別和StringBuffer類別(緩衝字串處理類別)。 
下面先簡單的說一下兩者的差別。 
String類別和StringBuffer類別都提供了對應的方法實作字串的運算,但二者略有不同。

(1) String類別 
該類別一旦產生一個字串,其物件就不可變。 String類別的內容和長度是固定的。如果程式需要取得字串的資訊需要呼叫系統提供的各種字串操作方法實作。雖然透過各種系統方法可以對字串施加操作,但這並不會改變物件實例本身,而是產生一個新的實例。系統為String類別物件分配內存,是按照物件所包含的實際字元數分配的。

(2) StringBuffer類 
查了查Buffer這個詞,有緩衝的意思,這個類別一定有緩衝的功能。該類別處理可變的字串。如果要修改一個StringBuffer類的字串,不需要再建立新的字串對象,而是直接操作原來的字串。類別的各種字串操作方法與String類別提供的方法不相同。系統為StringBuffer類別分配記憶體時,除去目前字元所佔的空間外,還提供另外的16個字元大小的緩衝區。每個StringBuffer物件都有一定的緩衝區容量,當字串大小沒有超過容量時,不會分配新的容量,當字串大小超過容量時,會自動增加容量。

下面來舉一些具體的實例

字串的連接

String類別有兩種方法

第一種(“+”)

public class str{
  public static void main(String[] args){
      String str1="加特效!";
      String str2="Duang~~";
      System.out.println(str1+" "+str2);
    }
  }

第二種(”concat”)

public class str{
  public static void main(String[] args){
      String str1="加特效!";
      String str2="Duang~~";
      System.out.println(str1.concat(str2));
    }
  }

StringBuffer類別的方法

public class str{
  public static void main(String[] args){
    //构建一个缓冲字符串的对象sb
    StringBuffer sb=new StringBuffer("加特效!");
    //通过append方法,在这个对象后面添加一个新字符串
    sb.append(" Duang~~");
    System.out.println(sb);
  }
}

最終輸出的結果都為:加特效! Duang~~

透過上面的例子不難看出,String類別在進行擴充的時候,需要實例兩個對象,每個物件都會佔用一定的內存,而StringBuffer類別就不需要再實例化一個新的類,只需要呼叫一個擴充的方法就可以了。

還有一點StringBuffer類別的記憶體容量是可擴充的。舉個具體的例子:

public class str{
  public static void main(String[] args){
     //声明字符串对象sb
      StringBuffer sb=new StringBuffer(40);
      System.out.println(sb.capacity());   //输出字符串的容量capacity
      sb.ensureCapacity(100);         //扩充容量
      System.out.println(sb.capacity());   //输出字符串的容量capacity
    }
  }

capacity()方法代表了字串物件在記憶體中,可以容納字串的數量。如果想要擴充記憶體容量,可以使用方法ensureCapacity()。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持PHP中文網。

更多JAVA中String類別與StringBuffer類別的區別相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn