Java字符串相關類StringBuffer的用法詳解
一、StringBuffer 介紹
java.lang
包下的StringBuffer類
,代表著可變的字符序列,可以用來對字符串內容進行增刪改操作。同時它是線程安全的,效率稱不上高。
StringBuffer類
當中的許多方法都是與String
相同的,是字符串相關的類,所以我稱他為字符串的兄弟…。但是兩兄弟也有本質的區(qū)別,String
是不可變的字符序列
二、方法詳解
1.構造方法
當我們想要創(chuàng)建StringBuffer
類型的對象,必須要使用到構造方法來生成,不同于String
類型的可以直接用常量賦值。
接下來就讓我來介紹一下StringBuffer
的三個構造方法:
①StringBuffer()
使用空參構造方法來創(chuàng)建StringBuffer對象,在底層會得到一個初始化容量大小為 16的字符換緩沖區(qū),而且這個長度是可以不斷擴容的,這也體現(xiàn)了可變字符序列的特性。
StringBuffer stringbuffer = new StringBuffer();
②StringBuffer(int size)
當我們需要創(chuàng)建StringBuffer
對象時,可以在括號內指定一個大小,從而獲得一個指定長度的字符串緩沖區(qū)。
比如我們將整數(shù)8
作為參數(shù)傳入就能在底層初始化一個容量為8的字符串緩沖區(qū)。
StringBuffer stringbuffer = new StringBuffer();
③StringBuffer(String str)
創(chuàng)建StringBuffer
對象時,借助構造方法,我們還可以創(chuàng)建一個包含內容的可變字符串序列,只需要將想要的內容作為字符串傳入即可;
我們可以傳入一個String
類型的對象傳入:
String a = "abcd"; StringBuffer sb_1 = new StringBuffer(a);
也可以直接傳入一個字符串常量:
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()
方法,可以用來對字符串進行拼接操作,我們可以來看一看:
通過上述列出來的實例中,我們可以知道,append()
方法中,除了String
類型外,無論是整形(int,long)、浮點型(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ù)前一個位置結束。
效果案例:
/** * @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()); } }
我們指定從刪除的位置從下標0開始,到下標6前一個位置結束:
4.改 StringBuffer replace(int start,int end,String str)
這是將指定位置內容替換成指定內容的方法replace(int start,int end,String str)
,替換的位置依舊是從start下標開始,到end下標的前一個位置結束,也就是[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()); } }
需要注意的是,此方法不是將指定位置內容完全由指定內容填充,而是直接將原本的內容替換成傳入的指定內容,是可以造成下標位置變化的。
5.插入 StringBuffer insert(int offset, · · · )
使用insert(int offset , · · · )
方法時,我們可以在指定下標位置的前面插入指定的內容,而內容對象的類型并不唯一,類似于上文將結果的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.反轉 StringBuffer reverse()
reverse()
方法可以將當前字符串序列的先后順序反轉過來,是十分常用的方法:
效果案例:
/** * @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()); } }
到此這篇關于Java字符串相關類StringBuffer的用法詳解的文章就介紹到這了,更多相關Java StringBuffer內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!