Android StringBuffer的使用方法詳解
今天,講講StringBuffer的使用。
StringBuffer類和String一樣,也用來代表字符串,只是由于StringBuffer的內(nèi)部實(shí)現(xiàn)方式和String不同,所以StringBuffer在進(jìn)行字符串處理時(shí),不生成新的對象,在內(nèi)存使用上要優(yōu)于String類。
所以在實(shí)際使用時(shí),如果經(jīng)常需要對一個(gè)字符串進(jìn)行修改,例如插入、刪除等操作,使用StringBuffer要更加適合一些。
在StringBuffer類中存在很多和String類一樣的方法,這些方法在功能上和String類中的功能是完全一樣的。
但是有一個(gè)最顯著的區(qū)別在于,對于StringBuffer對象的每次修改都會(huì)改變對象自身,這點(diǎn)是和String類最大的區(qū)別。
另外由于StringBuffer是線程安全的,關(guān)于線程的概念后續(xù)有專門的章節(jié)進(jìn)行介紹,所以在多線程程序中也可以很方便的進(jìn)行使用,但是程序的執(zhí)行效率相對來說就要稍微慢一些。
1、StringBuffer對象的初始化
StringBuffer對象的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構(gòu)造方法進(jìn)行初始化。
例如:
StringBuffer s = new StringBuffer();
這樣初始化出的StringBuffer對象是一個(gè)空的對象。
如果需要?jiǎng)?chuàng)建帶有內(nèi)容的StringBuffer對象,則可以使用:
StringBuffer s = new StringBuffer(“abc”);
這樣初始化出的StringBuffer對象的內(nèi)容就是字符串”abc”。
需要注意的是,StringBuffer和String屬于不同的類型,也不能直接進(jìn)行強(qiáng)制類型轉(zhuǎn)換,下面的代碼都是錯(cuò)誤的:
StringBuffer s = “abc”; //賦值類型不匹配 StringBuffer s = (StringBuffer)”abc”; //不存在繼承關(guān)系,無法進(jìn)行強(qiáng)轉(zhuǎn)
StringBuffer對象和String對象之間的互轉(zhuǎn)的代碼如下:
String s = “abc”; StringBuffer sb1 = new StringBuffer(“123”); StringBuffer sb2 = new StringBuffer(s); //String轉(zhuǎn)換為StringBuffer String s1 = sb1.toString(); //StringBuffer轉(zhuǎn)換為String
2、StringBuffer的常用方法
StringBuffer類中的方法主要偏重于對于字符串的變化,例如追加、插入和刪除等,這個(gè)也是StringBuffer和String類的主要區(qū)別。
a、append方法
public StringBuffer append(boolean b)
該方法的作用是追加內(nèi)容到當(dāng)前StringBuffer對象的末尾,類似于字符串的連接。調(diào)用該方法以后,StringBuffer對象的內(nèi)容也發(fā)生改變,例如:
StringBuffer sb = new StringBuffer(“abc”); sb.append(true);
則對象sb的值將變成”abctrue”。
使用該方法進(jìn)行字符串的連接,將比String更加節(jié)約內(nèi)容,例如應(yīng)用于數(shù)據(jù)庫SQL語句的連接,例如:
StringBuffer sb = new StringBuffer(); String user = “test”; String pwd = “123”; sb.append(“select * from userInfo where username=“) .append(user) .append(“ and pwd=”) .append(pwd);
這樣對象sb的值就是字符串“select * from userInfo where username=test and pwd=123”
。
b、deleteCharAt方法
public StringBuffer deleteCharAt(int index)
該方法的作用是刪除指定位置的字符,然后將剩余的內(nèi)容形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“Test”); sb. deleteCharAt(1);
該代碼的作用刪除字符串對象sb中索引值為1的字符,也就是刪除第二個(gè)字符,剩余的內(nèi)容組成一個(gè)新的字符串。所以對象sb的值變?yōu)椤盩st”。
還存在一個(gè)功能類似的delete方法:
public StringBuffer delete(int start,int end)
該方法的作用是刪除指定區(qū)間以內(nèi)的所有字符,包含start,不包含end索引值的區(qū)間。例如:
StringBuffer sb = new StringBuffer(“TestString”); sb. delete (1,4);
該代碼的作用是刪除索引值1(包括)到索引值4(不包括)之間的所有字符,剩余的字符形成新的字符串。則對象sb的值是”TString”。
c、insert方法
public StringBuffer insert(int offset, boolean b)
該方法的作用是在StringBuffer對象中插入內(nèi)容,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“TestString”); sb.insert(4,false);
該示例代碼的作用是在對象sb的索引值4的位置插入false值,形成新的字符串,則執(zhí)行以后對象sb的值是”TestfalseString”。
d、reverse方法
public StringBuffer reverse()
該方法的作用是將StringBuffer對象中的內(nèi)容反轉(zhuǎn),然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“abc”); sb.reverse();
經(jīng)過反轉(zhuǎn)以后,對象sb中的內(nèi)容將變?yōu)椤眂ba”。
e、setCharAt方法
public void setCharAt(int index, char ch)
該方法的作用是修改對象中索引值為index位置的字符為新的字符ch。例如:
StringBuffer sb = new StringBuffer(“abc”); sb.setCharAt(1,'D');
則對象sb的值將變成”aDc”。
f、trimToSize方法
public void trimToSize()
該方法的作用是將StringBuffer對象的中存儲(chǔ)空間縮小到和字符串長度一樣的長度,減少空間的浪費(fèi)。
總之,在實(shí)際使用時(shí),String和StringBuffer各有優(yōu)勢和不足,可以根據(jù)具體的使用環(huán)境,選擇對應(yīng)的類型進(jìn)行使用。
除了上述的知識(shí)外,String有三種方式情況內(nèi)容,
StringBuffer sb=new StringBuffer(); sb.delete(0, sb.length()); sb.setLength(0);
StringBuffer通過使用sbi.setLength(0);來清空StringBuffer對象中的內(nèi)容效率最高。
以上所述是小編給大家介紹的Android StringBuffer的使用方法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android Flutter基于WebSocket實(shí)現(xiàn)即時(shí)通訊功能
WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議。本文將利用Flutter WebSocket實(shí)現(xiàn)即時(shí)通訊功能,文中示例代碼講解詳細(xì),感興趣的可以了解一下2022-03-03android 圖片操作(縮放移動(dòng)) 實(shí)例代碼
android 圖片操作(縮放移動(dòng)) 實(shí)例代碼,需要的朋友可以參考一下2013-06-06Android對圖片Drawable實(shí)現(xiàn)變色示例代碼
這篇文章主要給大家介紹了關(guān)于Android對圖片Drawable實(shí)現(xiàn)變色的相關(guān)資料,文中通過示例代碼將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-08-08Android使用自定義屬性實(shí)現(xiàn)圖片自動(dòng)播放滾動(dòng)的功能
這篇文章主要介紹了Android使用自定義屬性實(shí)現(xiàn)圖片自動(dòng)播放滾動(dòng)的功能,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05flutter 怎么實(shí)現(xiàn)app整體灰色效果
Flutter 是 Google 開源的 UI 工具包,幫助開發(fā)者通過一套代碼庫高效構(gòu)建多平臺(tái)精美應(yīng)用,支持移動(dòng)、Web、桌面和嵌入式平臺(tái)。這篇文章給大家介紹flutter 怎么實(shí)現(xiàn)app整體灰色效果,感興趣的朋友一起看看吧2020-04-04詳解Android中接口回調(diào)、方法回調(diào)
在Android開發(fā)中我們很多地方都用到了方法的回調(diào),回調(diào)就是把方法的定義和功能導(dǎo)入實(shí)現(xiàn)分開的一種機(jī)制,目的是為了解耦他的本質(zhì)是基于觀察者設(shè)計(jì)模式,即觀察者設(shè)計(jì)模式的的簡化版。本文主要對Android中接口回調(diào)、方法回調(diào)進(jìn)行詳細(xì)介紹,下面跟著小編一起來看下吧2017-01-01Android實(shí)現(xiàn)單行標(biāo)簽流式布局
這篇文章主要為大家詳細(xì)介紹了Android單行標(biāo)簽流式布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09Android Webview添加網(wǎng)頁加載進(jìn)度條實(shí)例詳解
這篇文章主要介紹了Android Webview添加網(wǎng)頁加載進(jìn)度條實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-01-01