Java?String類和StringBuffer類的區(qū)別介紹
關(guān)于java的字符串處理我們一般使用String類和StringBuffer類
那么String類和StringBuffer類的區(qū)別在什么地方呢?
- 1、String是不可變的、
StringBuffer是可變的。在程序中如果定義String s = "this is a string".那么在以后的應(yīng)用中不能對s進(jìn)行任何修改只能進(jìn)行諸如subString等操作,如果想進(jìn)行改動只能重新new一個(gè)string而不是對原來的s進(jìn)行改動.而對于StringBuffer卻是可以改變的,在程序中定義StringBuffer s ="This is a",對于StringBuffer可以使用append和insert等函數(shù),如s.append("string")結(jié)果就是s="This is a string". - 2、
String類提供了一些方法,用來進(jìn)行字符串的比較。這個(gè)類實(shí)現(xiàn)了Object父類的equals()方法,用來比較兩種字符串的值是否相等。同時(shí)還增加了equalsIgnoreCase()方法可以忽略兩個(gè)字符串大小寫的區(qū)別。但是StringBuffer類并沒有實(shí)現(xiàn)Objcet類的Equals方法,所以不能用這個(gè)方法來比較兩個(gè)StringBuffer類的字符串是否相等。除了用equalse方法來比較兩個(gè)字符串外,還可以用==來比較字符串。與equalse方法不同的是,==不是比較兩個(gè)字符串的值是否相等,而是比較幾個(gè)字符串的引用是否指向同一個(gè)實(shí)例。 - 3、
StringBuffer的效率并不一定比string高,如對于String s1 ="This "+“is”+"a"+"string"和StringBuffer s2="":s2.append(""This");s2.append("is");s2.append("a");s2.append("string").測試發(fā)現(xiàn)前者明顯比后者效率高。原因是,在定義s1時(shí),編譯時(shí)即可使得s1="This is a string",而s2需要等到運(yùn)行時(shí)才能確定。 - 4、當(dāng)然了,一般情況下,StringBuffer是要比String效率高些的
與包裝類相似,String類是不可以改變的,從而不能修改字符串的值,所以必須創(chuàng)建一個(gè)新的字符串來存放,每次都重新開辟了一個(gè)內(nèi)存空間。
如果字符串較少的話我們可以使用String 類,如果文件有幾百成千個(gè)字節(jié)又會怎么樣呢.
相反,我們提供另一個(gè)類Stingbuffer 來對字符串進(jìn)行操作。
String類常用方法:
char charAt(int index); 返回index索引位置的字符
int length(); 返回字符串的長度。
String substring(int beginindex,int endindex)返回一個(gè)新的字符串,其值是beginindex索引位置到endindex索引位置。
String trim(); 去除字符串兩邊的空格,并返回一個(gè)新的字符串。
String toLowerCase(); 將字符串中的所以大寫字母轉(zhuǎn)換成小寫字母,已有大寫字母則不需要轉(zhuǎn)換,并返回一個(gè)新的字符串。
String toUpperCase();String toLowerCase(); 將字符串中的所以小‘寫字母轉(zhuǎn)換成小寫字母,已有小寫字母則不需要轉(zhuǎn)換,并返回一個(gè)新的字符串。
boolean equals(String str);本對象中的字符串與str對象字符串進(jìn)行比較(區(qū)分大小寫) 返回一個(gè)boolean值
String replace(char oldChar, char newChar);將舊的字符串(oldChar)換成新的字符串(newChar)
String類方法:
主要方法
append();向字符串末尾添加數(shù)據(jù),而不像String類重新開辟空間存放新的內(nèi)容
insert();根據(jù)方法的重載傳遞不同的參數(shù),在指定的位置對字符串進(jìn)行插入子字符串。
例:
?String str = "how "; ??str += "are "; ?str +="you";
如果我們打印str的最終結(jié)果是how are you 是我們所期望的,內(nèi)存里面的變化:
how
how are
how are you
String類使用重載加法運(yùn)算符,在字符串表中創(chuàng)建新的條目,上面一共創(chuàng)建了三條。
當(dāng)處理的字符串過多時(shí),上面的做法就很耗費(fèi)內(nèi)存。
?StringBuffer str = new StringBuffer("how");
?//向str末尾添加字符串
?str.append("are ");
?str.append( "you"); 將需要處理字符串交給StringBuffer類處理 ,
每個(gè)字符串緩沖區(qū)都有一定的容量。只要字符串緩沖區(qū)所包含的字符序列的長度沒有超出此容量,
就無需分配新的內(nèi)部緩沖區(qū)數(shù)組。如果內(nèi)部緩沖區(qū)溢出,則此容量自動增大。而不是重新聲明新的對象
這樣的話就不會耗費(fèi)內(nèi)存!
到此這篇關(guān)于Java String類和StringBuffer類的區(qū)別介紹的文章就介紹到這了,更多相關(guān)Java String類與StringBuffer類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java中String類的常用方法總結(jié)
- Java?String類的理解及字符串常量池介紹
- Java中String類常用方法總結(jié)詳解
- Java基礎(chǔ)之String類使用與字符串比較
- Java中String類常用方法使用詳解
- 帶你一文深入認(rèn)識Java?String類
- Java String類常用方法梳理總結(jié)
- Java深入淺出講解String類常見方法
- Java詳細(xì)分析String類與StringBuffer和StringBuilder的使用方法
- Java全面解析string類型的xml字符串
- Java中String類常用類型實(shí)例總結(jié)
- 深入剖析Java中String類的concat方法
- 詳解Java中String類的各種用法
- 一文帶你初識java中的String類
- Java String類的性質(zhì)與比較
- 關(guān)于Java中String類字符串的解析
- Java String類字符串的理解與認(rèn)知
- Java-String類最全匯總(上篇)
相關(guān)文章
mybatis學(xué)習(xí)之路mysql批量新增數(shù)據(jù)的方法
這篇文章主要介紹了mybatis學(xué)習(xí)之路mysql批量新增數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
Jackson中json格式的字符串與對象的互相轉(zhuǎn)換方式
這篇文章主要介紹了Jackson中json格式的字符串與對象的互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
實(shí)例詳解Java中如何對方法進(jìn)行調(diào)用
這篇文章主要介紹了實(shí)例詳解Java中如何對方法進(jìn)行調(diào)用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10
RxJava+Retrofit+Mvp實(shí)現(xiàn)購物車
這篇文章主要為大家詳細(xì)介紹了RxJava+Retrofit+Mvp實(shí)現(xiàn)購物車功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Spring Boot Web應(yīng)用開發(fā) CORS 跨域請求支持
本篇文章主要介紹了Spring Boot Web應(yīng)用開發(fā) CORS 跨域請求支持,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹
這篇文章主要介紹了Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12

