在Java中有兩種字符串的操作:String類和StringBuffer類(緩沖字符串處理類)。
下面先簡單的說一下兩者的區別。
String類和StringBuffer類都提供了相應的方法實現字符串的操作,但二者略有不同。
(1) String類
該類一旦產生一個字符串,其對象就不可變。String類的內容和長度是固定的。如果程序需要獲得字符串的信息需要調用系統提供的各種字符串操作方法實現。雖然通過各種系統方法可以對字符串施加操作,但這并不改變對象實例本身,而是生成一個新的實例。系統為String類對象分配內存,是按照對象所包含的實際字符數分配的。
(2) StringBuffer類
查了查Buffer這個詞,有緩沖的意思,這個類肯定有緩沖的功能。該類處理可變的字符串。如果要修改一個StringBuffer類的字符串,不需要再創建新的字符串對象,而是直接操作原來的串。該類的各種字符串操作方法與String類提供的方法不相同。系統為StringBuffer類分配內存時,除去當前字符所占的空間外,還提供另外的16個字符大小的緩沖區。每個StringBuffer對象都有一定的緩沖區容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增加容量。
下面來舉一些具體的實例
字符串的連接
String類有兩種方法
第一種(“+”)
1
2
3
4
5
6
7
|
public class str{ public static void main(String[] args){ String str1= "加特效!" ; String str2= "Duang~~" ; System.out.println(str1+ " " +str2); } } |
第二種(”concat”)
1
2
3
4
5
6
7
|
public class str{ public static void main(String[] args){ String str1= "加特效!" ; String str2= "Duang~~" ; System.out.println(str1.concat(str2)); } } |
StringBuffer類的方法
1
2
3
4
5
6
7
8
9
|
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類的內存容量是可擴展的。舉個具體的例子:
1
2
3
4
5
6
7
8
9
|
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()。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。