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