Java字符串相關(guān)類StringBuffer的用法詳解
一、StringBuffer 介紹
java.lang
包下的StringBuffer類
,代表著可變的字符序列,可以用來對字符串內(nèi)容進(jìn)行增刪改操作。同時(shí)它是線程安全的,效率稱不上高。
StringBuffer類
當(dāng)中的許多方法都是與String
相同的,是字符串相關(guān)的類,所以我稱他為字符串的兄弟…。但是兩兄弟也有本質(zhì)的區(qū)別,String
是不可變的字符序列
二、方法詳解
1.構(gòu)造方法
當(dāng)我們想要?jiǎng)?chuàng)建StringBuffer
類型的對象,必須要使用到構(gòu)造方法來生成,不同于String
類型的可以直接用常量賦值。
接下來就讓我來介紹一下StringBuffer
的三個(gè)構(gòu)造方法:
①StringBuffer()
使用空參構(gòu)造方法來創(chuàng)建StringBuffer對象,在底層會(huì)得到一個(gè)初始化容量大小為 16的字符換緩沖區(qū),而且這個(gè)長度是可以不斷擴(kuò)容的,這也體現(xiàn)了可變字符序列的特性。
StringBuffer stringbuffer = new StringBuffer();
②StringBuffer(int size)
當(dāng)我們需要?jiǎng)?chuàng)建StringBuffer
對象時(shí),可以在括號(hào)內(nèi)指定一個(gè)大小,從而獲得一個(gè)指定長度的字符串緩沖區(qū)。
比如我們將整數(shù)8
作為參數(shù)傳入就能在底層初始化一個(gè)容量為8的字符串緩沖區(qū)。
StringBuffer stringbuffer = new StringBuffer();
③StringBuffer(String str)
創(chuàng)建StringBuffer
對象時(shí),借助構(gòu)造方法,我們還可以創(chuàng)建一個(gè)包含內(nèi)容的可變字符串序列,只需要將想要的內(nèi)容作為字符串傳入即可;
我們可以傳入一個(gè)String
類型的對象傳入:
String a = "abcd"; StringBuffer sb_1 = new StringBuffer(a);
也可以直接傳入一個(gè)字符串常量:
StringBuffer sb_2 = new StringBuffer("abcd");
效果案例:
/** * @author .29. * @create 2022-10-07 19:04 */ public class StringBufferTest { public static void main(String[] args) { String a = "abcd"; StringBuffer sb_1 = new StringBuffer(a); StringBuffer sb_2 = new StringBuffer("abcd"); System.out.println(sb_1.toString()); System.out.println(sb_2.toString()); } }
2.增 StringBuffer append(…)
StringBuffer
類中提供了許多append()
方法,可以用來對字符串進(jìn)行拼接操作,我們可以來看一看:
通過上述列出來的實(shí)例中,我們可以知道,append()
方法中,除了String
類型外,無論是整形(int,long)、浮點(diǎn)型(float,double),還是布爾類型(boolean)也都可以作為參數(shù)傳入的。
效果案例:
/** * @author .29. * @create 2022-10-07 19:04 */ public class StringBufferTest { public static void main(String[] args) { StringBuffer sb_3 = new StringBuffer(); int A = 29; long B = 29L; float C = 2.9f; double D = 29.29; boolean E = true; sb_3.append(A); sb_3.append(" "); sb_3.append(B); sb_3.append(" "); sb_3.append(C); sb_3.append(" "); sb_3.append(D); sb_3.append(" "); sb_3.append(E); System.out.println(sb_3.toString()); } }
3.刪 StringBuffer delete(int start,int end)
delete(int start,int end)
方法可以用來刪除指定位置的元素,刪除元素的位置從start參數(shù)開始,到end參數(shù)前一個(gè)位置結(jié)束。
效果案例:
/** * @author .29. * @create 2022-10-07 19:04 */ public class StringBufferTest { public static void main(String[] args) { StringBuffer sb_3 = new StringBuffer("0123456789"); sb_3.delete(0,6); System.out.println(sb_3.toString()); } }
我們指定從刪除的位置從下標(biāo)0開始,到下標(biāo)6前一個(gè)位置結(jié)束:
4.改 StringBuffer replace(int start,int end,String str)
這是將指定位置內(nèi)容替換成指定內(nèi)容的方法replace(int start,int end,String str)
,替換的位置依舊是從start下標(biāo)開始,到end下標(biāo)的前一個(gè)位置結(jié)束,也就是[start , end)
效果案例:
/** * @author .29. * @create 2022-10-07 19:04 */ public class StringBufferTest { public static void main(String[] args) { StringBuffer sb_3 = new StringBuffer("0123456789"); System.out.println(sb_3.toString()); sb_3.replace(1,9," "); System.out.println(sb_3.toString()); sb_3.replace(1,9,"asdfghjkl"); System.out.println(sb_3.toString()); } }
需要注意的是,此方法不是將指定位置內(nèi)容完全由指定內(nèi)容填充,而是直接將原本的內(nèi)容替換成傳入的指定內(nèi)容,是可以造成下標(biāo)位置變化的。
5.插入 StringBuffer insert(int offset, · · · )
使用insert(int offset , · · · )
方法時(shí),我們可以在指定下標(biāo)位置的前面插入指定的內(nèi)容,而內(nèi)容對象的類型并不唯一,類似于上文將結(jié)果的append()
方法中的參數(shù)。
效果案例:
/** * @author .29. * @create 2022-10-07 19:04 */ public class StringBufferTest { public static void main(String[] args) { StringBuffer sb_3 = new StringBuffer("0123456789"); sb_3.insert(0,"a"); System.out.println(sb_3.toString()); sb_3.insert(1,"b"); System.out.println(sb_3.toString()); sb_3.insert(2,"c"); System.out.println(sb_3.toString()); sb_3.insert(3,"d"); System.out.println(sb_3.toString()); sb_3.insert(4,"e"); System.out.println(sb_3.toString()); sb_3.insert(5,"f"); System.out.println(sb_3.toString()); sb_3.insert(6,"g"); System.out.println(sb_3.toString()); } }
6.反轉(zhuǎn) StringBuffer reverse()
reverse()
方法可以將當(dāng)前字符串序列的先后順序反轉(zhuǎn)過來,是十分常用的方法:
效果案例:
/** * @author .29. * @create 2022-10-07 19:04 */ public class StringBufferTest { public static void main(String[] args) { StringBuffer sb_3 = new StringBuffer("0123456789"); System.out.println(sb_3.toString()); sb_3.reverse(); System.out.println(sb_3.toString()); } }
到此這篇關(guān)于Java字符串相關(guān)類StringBuffer的用法詳解的文章就介紹到這了,更多相關(guān)Java StringBuffer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot異步調(diào)用@Async過程詳解
這篇文章主要介紹了Spring Boot異步調(diào)用@Async過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11SpringCloud入門實(shí)驗(yàn)環(huán)境搭建
這篇文章主要介紹了SpringCloud入門實(shí)驗(yàn)環(huán)境搭建的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下2021-04-04淺談Java回收對象的標(biāo)記和對象的二次標(biāo)記過程
這篇文章主要介紹了淺談Java回收對象的標(biāo)記和對象的二次標(biāo)記過程的相關(guān)內(nèi)容,小編覺得還是挺不錯(cuò)的,這里給大家分享一下,需要的朋友可以參考。2017-10-10使用Netty快速實(shí)現(xiàn)一個(gè)群聊功能的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用?Netty?框架開發(fā)一個(gè)?WebSocket?服務(wù)端,從而實(shí)現(xiàn)一個(gè)簡單的在線聊天功能,感興趣的小伙伴可以了解下2023-11-11Java線程的并發(fā)工具類實(shí)現(xiàn)原理解析
本文給大家講解Java線程的并發(fā)工具類的一些知識(shí),通過適用場景分析大數(shù)據(jù)量統(tǒng)計(jì)類任務(wù)的實(shí)現(xiàn)原理和封裝,多個(gè)示例代碼講解的非常詳細(xì),對java線程并發(fā)工具類相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)下吧2021-06-06