首頁新聞動(dòng)態(tài)正文

Java String類和StringBuffer類有什么區(qū)別?

更新時(shí)間:2020-01-08 來源:黑馬程序員 瀏覽量:

由于字符串是常量,因此一旦創(chuàng)建,其內(nèi)容和長度是不可改變的。如果需要對(duì)一個(gè)字符串進(jìn)行修改,則只能創(chuàng)建新的字符串。為了便于對(duì)字符串的修改,在JDK中提供了個(gè)StringBuffer類(也稱字符串緩沖區(qū))。StringBuffer類和String類最大的區(qū)別在于它的內(nèi)容和長度都是可以改變的。StringBuffer類似一個(gè)字符容器,當(dāng)在其中添加或刪除字符時(shí),并不會(huì)產(chǎn)生新的StringBuffer對(duì)象。針對(duì)添加和刪除字符的操作,StringBuffer類提供了一系列的方法。

1578474077903_String和StringBuffer的區(qū)別.jpg


StringBuffer類和String類有很多相似之處,初學(xué)者在使用時(shí)很容易混淆。接下來針對(duì)這兩個(gè)類進(jìn)行對(duì)比,簡單歸納一下兩者的不同,具體如下:

(1)String類表示的字符串是常量,一旦創(chuàng)建后,內(nèi)容和長度都是無法改變的。而StringBuffer表示字符容器,其內(nèi)容和長度都可以隨時(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ò)


1577349771854_學(xué)IT就到黑馬程序員.gif


猜你喜歡:

Java String類的操作有哪些?
黑馬程序員java基礎(chǔ)教程下載

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!