更新時(shí)間:2020-01-08 來(lái)源:黑馬程序員 瀏覽量:
由于字符串是常量,因此一旦創(chuàng)建,其內(nèi)容和長(zhǎng)度是不可改變的。如果需要對(duì)一個(gè)字符串進(jìn)行修改,則只能創(chuàng)建新的字符串。為了便于對(duì)字符串的修改,在JDK中提供了個(gè)StringBuffer類(也稱字符串緩沖區(qū))。StringBuffer類和String類最大的區(qū)別在于它的內(nèi)容和長(zhǎng)度都是可以改變的。StringBuffer類似一個(gè)字符容器,當(dāng)在其中添加或刪除字符時(shí),并不會(huì)產(chǎn)生新的StringBuffer對(duì)象。針對(duì)添加和刪除字符的操作,StringBuffer類提供了一系列的方法。
StringBuffer類和String類有很多相似之處,初學(xué)者在使用時(shí)很容易混淆。接下來(lái)針對(duì)這兩個(gè)類進(jìn)行對(duì)比,簡(jiǎn)單歸納一下兩者的不同,具體如下:
(1)String類表示的字符串是常量,一旦創(chuàng)建后,內(nèi)容和長(zhǎng)度都是無(wú)法改變的。而StringBuffer表示字符容器,其內(nèi)容和長(zhǎng)度都可以隨時(shí)修改。在操作字符串時(shí),如果該字符串僅用于表示數(shù)據(jù)類型,則使用 String類即可,但是如果需要對(duì)字符串中的字符進(jìn)行增刪操作,則使用 StringBuffer類。
(2) String類覆蓋了Object類的equals()方法,而StringBuffer類沒有覆蓋Object類的equals()方法,具體示例如下
String s1=new String("abc");
String s2=new String("abd");
System.out.println(s1.equals(s2)); //打印結(jié)果為true
StringBuffer sb1=new StingBuffer("abc");
StringBuffer sb2=new StringBuffer("abc");
System.out.println(sb1.equeals(sb2)); //打印結(jié)果為false
(3) String類對(duì)象可以用操作符+進(jìn)行連接,而 String Buffer類對(duì)象之間不能,具體例如下:
String s1="a";
String s2="b";
String s3=s1+s2; //合法
System.out.println(s3); //打印輸出ab
StringBuffer sb1=new StringBuffer("a");
StringBuffer sb2=new StringBuffer("b");
StringBuffer sb3=sb1+sb2; //編譯出錯(cuò)
猜你喜歡: