Java字符串相關(guān)類(lèi)StringBuffer的用法詳解
一、StringBuffer 介紹
java.lang包下的StringBuffer類(lèi),代表著可變的字符序列,可以用來(lái)對(duì)字符串內(nèi)容進(jìn)行增刪改操作。同時(shí)它是線程安全的,效率稱不上高。
StringBuffer類(lèi)當(dāng)中的許多方法都是與String相同的,是字符串相關(guān)的類(lèi),所以我稱他為字符串的兄弟…。但是兩兄弟也有本質(zhì)的區(qū)別,String是不可變的字符序列
二、方法詳解
1.構(gòu)造方法
當(dāng)我們想要?jiǎng)?chuàng)建StringBuffer類(lèi)型的對(duì)象,必須要使用到構(gòu)造方法來(lái)生成,不同于String類(lèi)型的可以直接用常量賦值。
接下來(lái)就讓我來(lái)介紹一下StringBuffer的三個(gè)構(gòu)造方法:
①StringBuffer()
使用空參構(gòu)造方法來(lái)創(chuàng)建StringBuffer對(duì)象,在底層會(huì)得到一個(gè)初始化容量大小為 16的字符換緩沖區(qū),而且這個(gè)長(zhǎng)度是可以不斷擴(kuò)容的,這也體現(xiàn)了可變字符序列的特性。
StringBuffer stringbuffer = new StringBuffer();
②StringBuffer(int size)
當(dāng)我們需要?jiǎng)?chuàng)建StringBuffer對(duì)象時(shí),可以在括號(hào)內(nèi)指定一個(gè)大小,從而獲得一個(gè)指定長(zhǎng)度的字符串緩沖區(qū)。
比如我們將整數(shù)8作為參數(shù)傳入就能在底層初始化一個(gè)容量為8的字符串緩沖區(qū)。
StringBuffer stringbuffer = new StringBuffer();
③StringBuffer(String str)
創(chuàng)建StringBuffer對(duì)象時(shí),借助構(gòu)造方法,我們還可以創(chuàng)建一個(gè)包含內(nèi)容的可變字符串序列,只需要將想要的內(nèi)容作為字符串傳入即可;
我們可以傳入一個(gè)String類(lèi)型的對(duì)象傳入:
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類(lèi)中提供了許多append()方法,可以用來(lái)對(duì)字符串進(jìn)行拼接操作,我們可以來(lái)看一看:

通過(guò)上述列出來(lái)的實(shí)例中,我們可以知道,append()方法中,除了String類(lèi)型外,無(wú)論是整形(int,long)、浮點(diǎn)型(float,double),還是布爾類(lèi)型(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)方法可以用來(lái)刪除指定位置的元素,刪除元素的位置從start參數(shù)開(kāi)始,到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開(kāi)始,到下標(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)開(kāi)始,到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)容對(duì)象的類(lèi)型并不唯一,類(lè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)過(guò)來(lái),是十分常用的方法:
效果案例:
/**
* @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)類(lèi)StringBuffer的用法詳解的文章就介紹到這了,更多相關(guān)Java StringBuffer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot異步調(diào)用@Async過(guò)程詳解
這篇文章主要介紹了Spring Boot異步調(diào)用@Async過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringCloud入門(mén)實(shí)驗(yàn)環(huán)境搭建
這篇文章主要介紹了SpringCloud入門(mén)實(shí)驗(yàn)環(huán)境搭建的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下2021-04-04
淺談Java回收對(duì)象的標(biāo)記和對(duì)象的二次標(biāo)記過(guò)程
這篇文章主要介紹了淺談Java回收對(duì)象的標(biāo)記和對(duì)象的二次標(biāo)記過(guò)程的相關(guān)內(nèi)容,小編覺(jué)得還是挺不錯(cuò)的,這里給大家分享一下,需要的朋友可以參考。2017-10-10
使用Netty快速實(shí)現(xiàn)一個(gè)群聊功能的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用?Netty?框架開(kāi)發(fā)一個(gè)?WebSocket?服務(wù)端,從而實(shí)現(xiàn)一個(gè)簡(jiǎn)單的在線聊天功能,感興趣的小伙伴可以了解下2023-11-11
Java線程的并發(fā)工具類(lèi)實(shí)現(xiàn)原理解析
本文給大家講解Java線程的并發(fā)工具類(lèi)的一些知識(shí),通過(guò)適用場(chǎng)景分析大數(shù)據(jù)量統(tǒng)計(jì)類(lèi)任務(wù)的實(shí)現(xiàn)原理和封裝,多個(gè)示例代碼講解的非常詳細(xì),對(duì)java線程并發(fā)工具類(lèi)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)下吧2021-06-06

