標籤:java string stringbuffer
在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()。
新手學JAVA(二)----String類與StringBuffer類的區別