Java核心類庫(kù) -- 03 字符串相關(guān)

字符串相關(guān)的處理類

目錄導(dǎo)讀
String
StringBuffer(線程安全) 1.0出現(xiàn)
StringBuilder(線程不安全) 1.5出現(xiàn)
數(shù)組與StringBuffer/StringBuilder的區(qū)別

1.String 類
是不可變類,即一旦一個(gè)String對(duì)象被創(chuàng)建之后,該對(duì)象中的字符序列就不可被改變,直至該對(duì)象被銷毀
適合用于數(shù)據(jù)共享的場(chǎng)合

(1)構(gòu)造器
    public String();
    public String(byte[] bytes);
    public String(byte[] bytes, int index, int length);
    public String(char[] chs);
    public String(char[] chs, int index, int length);
    public String(String original); //String s = new String("hello");
    public String(StringBuffer buffer);
    public String(StringBuilder builder);

(2)判斷功能
    1.是否相等
    public boolean equals(Object obj); //比較內(nèi)容,區(qū)分大小寫(xiě),因?yàn)镾tring重寫(xiě)了equals方法
    public boolean equalsIgnoreCase(String s); //不區(qū)分大小
    
    2.是否包含
    public boolean contains(String s); //是否包含

    3.是否是特定開(kāi)頭
    boolean startsWith(String prefix); //是否以prefix開(kāi)頭
    boolean startsWith(String prefix, int toffset); //從toffset后開(kāi)始是否以prefix開(kāi)頭
    
    4.是否是特定結(jié)尾
    boolean endsWith(String str); //是否以str結(jié)尾
    5.叛空
    boolean isEmpty(); //是否為空

(3)獲取功能
    1.長(zhǎng)度
    public int length(); 

    2.特定位置的字符
    public char charAt(int index); //獲取index 處的字符

    3.特定字符首次出現(xiàn)的位置
    public int indexOf(int ch); //返回特定字符(這里用其ASCII值做參數(shù))在該字符串中第一次出現(xiàn)的位置
    注意:這里把參數(shù)類型限制為int而不是char類型,是為了防止發(fā)生強(qiáng)制類型轉(zhuǎn)換造成精度損失
    public int indexOf(int ch, int fromIndex);
    public int indexOf(String str); //返回字符串在此字符中第一次出現(xiàn)的位置
    public int indexOf(String str, int fromIndex) ;

    4.截取功能
    public String substring(int start); //從start處開(kāi)始截取至末尾。包含start
    public String substring(int start, int end); //截取該范圍內(nèi)的[start, end)字符串

(4)轉(zhuǎn)換功能
    1.類型轉(zhuǎn)換
    public char[] toCharArray(); //String ——> char[]
    public static String valueOf(X x); //是static方法,將任意類型轉(zhuǎn)換為String, 任意類型包括基本類型和對(duì)象類型
    public byte[] getBytes(); //String ——> byte[]
    public void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin); //部分轉(zhuǎn)換    
    public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin); //部分轉(zhuǎn)換
    
    2.大小寫(xiě)轉(zhuǎn)換
    public String toLowerCase(); //轉(zhuǎn)小寫(xiě)
    public String toUpperCase(); //轉(zhuǎn)大寫(xiě)

    3.拼接
    public String concat(String str); //拼接字符串

(5)替換功能
    public String replace(char old, char newChar); //針對(duì)字符
    public String replace(String old, String newString); //針對(duì)字符串

(6)去掉字符串兩端的空格
    public String trim(); //只能去掉兩端處的空格,之間位置的不行

注意:由于String是不可變類,所以很容易產(chǎn)生一些額外的臨時(shí)變量,消耗過(guò)多的內(nèi)存
資源,因此,使用StringBuffer、StringBuilder就可以避免這個(gè)問(wèn)題

2.StringBuffer / StringBuilder 類
這兩個(gè)對(duì)象代表一個(gè)字符串序列可變。
適合用于數(shù)據(jù)內(nèi)容被頻繁修改的場(chǎng)合

區(qū)別在于 StringBuffer 是線程安全的,因此效率不高
         StringBuilder 是線程不安全的,因此效率較高,故一般用StringBuilder
二者的方法用法基本一樣,只介紹StringBuffer,另一種類推

(1)構(gòu)造器
    public StringBuffer(); //默認(rèn)出事容量,16個(gè)字符,第一次擴(kuò)容(+18),第二次以后擴(kuò)容 +1
    public StringBuffer(int capacity); //指定容量capacity,第一次擴(kuò)容(capacity+2),第二次以后擴(kuò)容 +1
    public StringBuffer(String str); //指定內(nèi)容的StringBuffer

(2)反轉(zhuǎn)功能
    public StringBuffer reverse(); //將字符串倒序

(3)獲取功能
    1.長(zhǎng)度
    public int capacity(); //返回當(dāng)前容量,理論值為16(默認(rèn)情況下)
    public int length(); //返回實(shí)際長(zhǎng)度

    2.截取功能
    public String substring(int start); //從start處截取值末尾,存儲(chǔ)在新的String中
    public String substring(int start, int end); //截取[start, end)間的字符,存儲(chǔ)在新的String中
    注意:這兩個(gè)方法執(zhí)行后,原來(lái)的StrignBuffer里的內(nèi)容并沒(méi)有發(fā)生任何變化

(4)添加功能
    public StringBuffer append(X x); //追加x在原始字符串后(即在原緩沖區(qū)對(duì)象里修改)
    注:X可以為任何類型的數(shù)據(jù),甚至可以是Obejct類的對(duì)象
    public StringBuffer insert(int offset, String str); //在offset處插入數(shù)據(jù)

(5)刪除功能
    public StringBuffer deletCharAt(int index); //刪除指定位置的字符
    public StringBuffer delete(int start, int end); //刪除[start, end)位置的字符

(6)替換功能
    public StringBuffer replace(int start, int end, String str); //str替換[start, end)處的字符

(7)轉(zhuǎn)換
    1.StringBuffer -> String 
    public String toString(); 

    2.String -> StringBuffer
    public StringBuffer(String str); //指定內(nèi)容的StringBuffer

3.數(shù)組與StringBuffer/StringBuilder的區(qū)別
(1)二者均為容器,用來(lái)存放數(shù)據(jù)
(2)StringBuffer/StringBuilder的數(shù)據(jù)最終是一個(gè)字符串?dāng)?shù)據(jù)(里面可以存放多種不同類型的數(shù)據(jù))
每一個(gè)具體的數(shù)組中只能存放一種類型的數(shù)據(jù)
(3)數(shù)組的長(zhǎng)度是固定不變的,StringBuffer/StringBuilder的長(zhǎng)度可變

注意:數(shù)組在Java中是一種對(duì)象(因?yàn)镴ava中的數(shù)組擁有自己的屬性,如length,還有方法如clone()等),但在C/C++中數(shù)組名只是一個(gè)指針,沒(méi)有屬性和方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,652評(píng)論 18 399
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,254評(píng)論 0 62
  • 集合框架: 1)特點(diǎn):存儲(chǔ)對(duì)象;長(zhǎng)度可變;存儲(chǔ)對(duì)象的類型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang閱讀 1,386評(píng)論 0 4
  • 如果你羽化成蝶,我是否有勇氣跟你走!?。?! 不記得前世的來(lái)回,只記得你衣袂翩躚,在風(fēng)的一角,在水一邊,寂靜的等待!...
    茱麗親吻夜閱讀 320評(píng)論 0 0
  • 三生河畔, 矗立著一座奈何橋, 你我同在橋上走過(guò), 舉杯飲下孟婆湯。 在青石上許諾, 來(lái)生你投錦瑟,我化流年。 來(lái)...
    鐵牟閱讀 918評(píng)論 1 6

友情鏈接更多精彩內(nèi)容