第5章數(shù)組與字符串_第1頁
第5章數(shù)組與字符串_第2頁
第5章數(shù)組與字符串_第3頁
第5章數(shù)組與字符串_第4頁
第5章數(shù)組與字符串_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第5 5章章 數(shù)組與字符串?dāng)?shù)組與字符串?dāng)?shù)組是一種數(shù)據(jù)結(jié)構(gòu),其功能是用來存儲同一類型的數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),其功能是用來存儲同一類型的值。與大多數(shù)語言一樣,值。與大多數(shù)語言一樣,Java中也有數(shù)組,本章將介紹如何中也有數(shù)組,本章將介紹如何對數(shù)組進(jìn)行聲明、創(chuàng)建、初始化以及對數(shù)組進(jìn)行聲明、創(chuàng)建、初始化以及Java中數(shù)組的實現(xiàn)機(jī)制中數(shù)組的實現(xiàn)機(jī)制。另外,任何編程語言都肯定要支持對字符串信息的處另外,任何編程語言都肯定要支持對字符串信息的處理,其中大部分都將字符串作為一種基本類型,或者干脆用理,其中大部分都將字符串作為一種基本類型,或者干脆用字符數(shù)組來代替。但字符數(shù)組來代替。但Java中處理字符串的機(jī)制

2、與別的語言大中處理字符串的機(jī)制與別的語言大不相同,設(shè)計十分巧妙,可以說是不相同,設(shè)計十分巧妙,可以說是Java語言的特點(diǎn)之一。本語言的特點(diǎn)之一。本章將詳細(xì)介紹章將詳細(xì)介紹Java中的字符串處理機(jī)制及相關(guān)內(nèi)容,主要包中的字符串處理機(jī)制及相關(guān)內(nèi)容,主要包括括String、StringBuffer、StringBuilder類等幾方面的內(nèi)容。類等幾方面的內(nèi)容。5.1 5.1 數(shù)組的聲明與創(chuàng)建數(shù)組的聲明與創(chuàng)建數(shù)組中的元素可以是基本數(shù)據(jù)類型,也可以是對象引數(shù)組中的元素可以是基本數(shù)據(jù)類型,也可以是對象引用類型。但不論其元素是何種類型,數(shù)組本身是對象,這是用類型。但不論其元素是何種類型,數(shù)組本身是對象,這是

3、Java中數(shù)組不同于其他語言的一大區(qū)別。本節(jié)將介紹如何編中數(shù)組不同于其他語言的一大區(qū)別。本節(jié)將介紹如何編寫代碼定義數(shù)組對象引用及創(chuàng)建數(shù)組對象。寫代碼定義數(shù)組對象引用及創(chuàng)建數(shù)組對象。5.1.1 5.1.1 聲明數(shù)組引用聲明數(shù)組引用聲明數(shù)組引用時,需要提供數(shù)組將要保存元素的類型聲明數(shù)組引用時,需要提供數(shù)組將要保存元素的類型以及該數(shù)組的維數(shù)兩方面的信息。維數(shù)通過方括號的對數(shù)來以及該數(shù)組的維數(shù)兩方面的信息。維數(shù)通過方括號的對數(shù)來指出,方括號對可以位于數(shù)組引用左邊也可以位于其右邊,指出,方括號對可以位于數(shù)組引用左邊也可以位于其右邊,如下代碼說明了這個問題。如下代碼說明了這個問題。/聲明了一個聲明了一個i

4、nt型一維數(shù)組的數(shù)組引用型一維數(shù)組的數(shù)組引用k,方括號對位,方括號對位于于k的左邊的左邊int k;/聲明一個聲明一個String(字符串)型一維數(shù)組的數(shù)組引用(字符串)型一維數(shù)組的數(shù)組引用s,方括號對位于方括號對位于s的右邊的右邊String s ;5.1.2 5.1.2 創(chuàng)建數(shù)組對象創(chuàng)建數(shù)組對象創(chuàng)建數(shù)組對象最常用的方法是使用關(guān)鍵字創(chuàng)建數(shù)組對象最常用的方法是使用關(guān)鍵字new,基本語,基本語法如下:法如下:new元素類型元素類型第一維維數(shù)第一維維數(shù)第二維維數(shù)第二維維數(shù)下面的代碼說明了如何創(chuàng)建數(shù)組對象。下面的代碼說明了如何創(chuàng)建數(shù)組對象。/創(chuàng)建了創(chuàng)建了int型長度為型長度為5的一維數(shù)組對象的一維數(shù)

5、組對象new int5;/創(chuàng)建了創(chuàng)建了String型第一維長度為型第一維長度為6第二維長度為第二維長度為5的二維的二維數(shù)組對象數(shù)組對象new String65;5.2 Java5.2 Java中數(shù)組的實現(xiàn)機(jī)制中數(shù)組的實現(xiàn)機(jī)制前面已經(jīng)提到過,前面已經(jīng)提到過,Java中的數(shù)組與其他語言不同,其中的數(shù)組與其他語言不同,其本身是一個對象,只有通過指向其本身的引用才能對其進(jìn)行本身是一個對象,只有通過指向其本身的引用才能對其進(jìn)行訪問。本小節(jié)將詳細(xì)闡述訪問。本小節(jié)將詳細(xì)闡述Java中數(shù)組的實現(xiàn)機(jī)制。中數(shù)組的實現(xiàn)機(jī)制。首先介紹最簡單的一維基本數(shù)據(jù)類型數(shù)組的實現(xiàn),請首先介紹最簡單的一維基本數(shù)據(jù)類型數(shù)組的實現(xiàn),請

6、考查如下代碼??疾槿缦麓a。1 int k;/聲明數(shù)組引用聲明數(shù)組引用k2 k=new int5;/讓引用讓引用k指向創(chuàng)建的一維指向創(chuàng)建的一維int數(shù)組數(shù)組3 k0=1;/為指定的數(shù)組元素賦值為指定的數(shù)組元素賦值4 k4=4; /為指定的數(shù)組元素賦值為指定的數(shù)組元素賦值5.2 Java5.2 Java中數(shù)組的實現(xiàn)機(jī)制中數(shù)組的實現(xiàn)機(jī)制5.3 5.3 數(shù)組的初始化數(shù)組的初始化數(shù)組的初始化是指給數(shù)組中的元素賦初值,本節(jié)將對數(shù)組的初始化是指給數(shù)組中的元素賦初值,本節(jié)將對這方面的知識進(jìn)行詳細(xì)的介紹,主要包括默認(rèn)初始化、利用這方面的知識進(jìn)行詳細(xì)的介紹,主要包括默認(rèn)初始化、利用循環(huán)初始化、枚舉初始化等內(nèi)容。

7、循環(huán)初始化、枚舉初始化等內(nèi)容。5.3.1 5.3.1 默認(rèn)初始化默認(rèn)初始化不論是什么類型的數(shù)組,從創(chuàng)建開始,系統(tǒng)便會默認(rèn)為其每不論是什么類型的數(shù)組,從創(chuàng)建開始,系統(tǒng)便會默認(rèn)為其每個元素賦初值。個元素賦初值。類型默認(rèn)值類型默認(rèn)值booleanFalseint0byte0long0Lshort0float0.0Fcharu0000double0.05.3.2 5.3.2 利用循環(huán)初始化利用循環(huán)初始化如果數(shù)組元素需要的初始值與默認(rèn)值不同,但又具有如果數(shù)組元素需要的初始值與默認(rèn)值不同,但又具有明顯的規(guī)律,則可以利用循環(huán)語句對其進(jìn)行初始化。明顯的規(guī)律,則可以利用循環(huán)語句對其進(jìn)行初始化。5.3.3 5.3

8、.3 枚舉初始化枚舉初始化如果數(shù)組元素需要的初始值與默認(rèn)值不同,但又沒有如果數(shù)組元素需要的初始值與默認(rèn)值不同,但又沒有明顯的規(guī)律,而數(shù)量不多則可以使用枚舉初始化,有兩種語明顯的規(guī)律,而數(shù)量不多則可以使用枚舉初始化,有兩種語法,如下所示。法,如下所示?;菊Z法基本語法省略語法省略語法本小節(jié)將對這兩種語法的使用進(jìn)行詳細(xì)介紹。本小節(jié)將對這兩種語法的使用進(jìn)行詳細(xì)介紹。1基本語法基本語法2省略語法省略語法5.4 5.4 數(shù)組的相互賦值數(shù)組的相互賦值所謂數(shù)組的相互賦值實際上是指數(shù)組引用的相互賦值所謂數(shù)組的相互賦值實際上是指數(shù)組引用的相互賦值,因為在,因為在Java中,數(shù)組是對象,對象是中,數(shù)組是對象,對象

9、是“看不見看不見”的,只有的,只有對象引用可以拿在對象引用可以拿在“手手”中。本節(jié)將從兩個方面來討論數(shù)組中。本節(jié)將從兩個方面來討論數(shù)組賦值的相關(guān)規(guī)則,主要包括基本類型數(shù)組的賦值與引用型數(shù)賦值的相關(guān)規(guī)則,主要包括基本類型數(shù)組的賦值與引用型數(shù)組的賦值。組的賦值。5.4.1 5.4.1 基本類型數(shù)組賦值規(guī)則基本類型數(shù)組賦值規(guī)則基本類型數(shù)組賦值規(guī)則如下?;绢愋蛿?shù)組賦值規(guī)則如下。數(shù)組的維數(shù)要相等。數(shù)組的維數(shù)要相等。數(shù)組元素的類型要完全相同。數(shù)組元素的類型要完全相同。5.4.2 5.4.2 引用型數(shù)組賦值規(guī)則引用型數(shù)組賦值規(guī)則引用型數(shù)組賦值規(guī)則比較簡單,如下所列。引用型數(shù)組賦值規(guī)則比較簡單,如下所列。數(shù)

10、組的維數(shù)要相等。數(shù)組的維數(shù)要相等。數(shù)組元素的類型要兼容,也就是說數(shù)組元素可以賦值數(shù)組元素的類型要兼容,也就是說數(shù)組元素可以賦值。5.5 5.5 數(shù)組的基本操作數(shù)組的基本操作前面幾節(jié)介紹了聲明、創(chuàng)建以及初始化數(shù)組的方法。前面幾節(jié)介紹了聲明、創(chuàng)建以及初始化數(shù)組的方法。本節(jié)將介紹幾種數(shù)組中常用的操作,從而幫助讀者更加方便本節(jié)將介紹幾種數(shù)組中常用的操作,從而幫助讀者更加方便地操縱數(shù)組。地操縱數(shù)組。5.5.1 5.5.1 數(shù)組復(fù)制數(shù)組復(fù)制在在Java中,將一個數(shù)組引用賦給另一個數(shù)組引用后,中,將一個數(shù)組引用賦給另一個數(shù)組引用后,這兩個數(shù)組引用將指向同一個數(shù)組對象。若使用箭頭表示數(shù)這兩個數(shù)組引用將指向同一

11、個數(shù)組對象。若使用箭頭表示數(shù)組引用,橢圓表示數(shù)組對象。組引用,橢圓表示數(shù)組對象。這樣帶來的后果是,不論通過哪一個引用對數(shù)組對象這樣帶來的后果是,不論通過哪一個引用對數(shù)組對象進(jìn)行操作,其他指向此數(shù)組對象的引用都會感覺到變化,因進(jìn)行操作,其他指向此數(shù)組對象的引用都會感覺到變化,因為其引用的是同一個對象。這與基本數(shù)據(jù)類型的變量賦值不為其引用的是同一個對象。這與基本數(shù)據(jù)類型的變量賦值不同,基本數(shù)據(jù)類型變量是不會相互影響的。同,基本數(shù)據(jù)類型變量是不會相互影響的。5.5.1 5.5.1 數(shù)組復(fù)制數(shù)組復(fù)制5.5.2 5.5.2 數(shù)組排序數(shù)組排序?qū)?shù)組中的元素進(jìn)行排序也是開發(fā)中常用的功能,對數(shù)組中的元素進(jìn)行排

12、序也是開發(fā)中常用的功能,Java中中也提供了完成這種功能的工具方法。也提供了完成這種功能的工具方法。方法簽名說明所屬類public static void sort(xxx a)對指定的數(shù)組進(jìn)行排序,排序結(jié)果還存放在原來數(shù)組中Arrayspublic static void sort(xxx a,int fromIndex,int toIndex)對指定數(shù)組的區(qū)間進(jìn)行排序,fromIndex與toIndex用來指定區(qū)間,排序結(jié)果還存放在原來數(shù)組中Arrays5.5.3 5.5.3 搜索指定元素搜索指定元素在實際開發(fā)中,經(jīng)常需要在指定的數(shù)組中搜索特定元素在實際開發(fā)中,經(jīng)常需要在指定的數(shù)組中搜索特

13、定元素的位置,的位置,Java中也提供了相應(yīng)的工具方法來幫助開發(fā)人員進(jìn)行中也提供了相應(yīng)的工具方法來幫助開發(fā)人員進(jìn)行操作。操作。方法簽名說明所屬類public static int binarySearch(xxx a,xxx key)從數(shù)組中搜索第一個指定值元素的位置。key是要搜索的值,a指向要被搜索的數(shù)組,返回值為搜索到位置的索引,沒有找到則返回負(fù)數(shù)Arrayspublic static int binarySearch(xxx a,int fromIndex,int toIndex,xxx key)從數(shù)組指定區(qū)間中搜索第一個指定值元素的位置。key是要搜索的值,a指向要被搜索的數(shù)組,fr

14、omInde與toIndex指出搜索區(qū)間,返回值為搜索到位置的索引,沒有找到則返回負(fù)數(shù)Arrays5.5.4 5.5.4 比較數(shù)組中的元素比較數(shù)組中的元素在實際開發(fā)中有時需要比較兩個數(shù)組中的元素值是否在實際開發(fā)中有時需要比較兩個數(shù)組中的元素值是否相同,這在相同,這在Java中也不用自己開發(fā)代碼,只要調(diào)用中也不用自己開發(fā)代碼,只要調(diào)用Arrays類類的的equals方法即可。方法即可。5.6 5.6 關(guān)于關(guān)于argsargs前面章節(jié)已經(jīng)出現(xiàn)很多前面章節(jié)已經(jīng)出現(xiàn)很多Java的應(yīng)用程序,每一個程序的應(yīng)用程序,每一個程序里面都有里面都有“public static void main(String a

15、rgs)”。其實。其實main是一個特定的方法,是是一個特定的方法,是Java程序執(zhí)行的入口點(diǎn),是加載程序執(zhí)行的入口點(diǎn),是加載Java程序后由程序后由Java的運(yùn)行時系統(tǒng)自動調(diào)用的。的運(yùn)行時系統(tǒng)自動調(diào)用的。5.7 String5.7 String類類任何編程語言都肯定要支持對字符串信息的處理,其任何編程語言都肯定要支持對字符串信息的處理,其中大部分都將字符串作為一種基本類型,或者干脆用字符數(shù)中大部分都將字符串作為一種基本類型,或者干脆用字符數(shù)組來代替。但組來代替。但Java中處理字符串的機(jī)制與別的語言大不相同中處理字符串的機(jī)制與別的語言大不相同,設(shè)計十分巧妙,可以說是,設(shè)計十分巧妙,可以說是J

16、ava語言的亮點(diǎn)之一。本章將詳語言的亮點(diǎn)之一。本章將詳細(xì)介紹細(xì)介紹Java中的字符串處理機(jī)制及相關(guān)內(nèi)容,主要包括中的字符串處理機(jī)制及相關(guān)內(nèi)容,主要包括String、StringBuffer、StringBuilder類等幾方面的內(nèi)容。類等幾方面的內(nèi)容。5.7.1 5.7.1 對象的創(chuàng)建對象的創(chuàng)建Java是面向?qū)ο蟮恼Z言,因此是面向?qū)ο蟮恼Z言,因此Java中的字符串是用對中的字符串是用對象實現(xiàn)的。當(dāng)開發(fā)人員創(chuàng)建字符串的時候,實際上就創(chuàng)建了象實現(xiàn)的。當(dāng)開發(fā)人員創(chuàng)建字符串的時候,實際上就創(chuàng)建了String類的對象,并可以用類的對象,并可以用String類的引用對其進(jìn)行操作。類的引用對其進(jìn)行操作。字符

17、串對象的創(chuàng)建語法有兩種形式,如下所列。字符串對象的創(chuàng)建語法有兩種形式,如下所列。String 引用變量名引用變量名=字符串內(nèi)容字符串內(nèi)容;或者或者String 引用變量名引用變量名=new String();5.7.2 5.7.2 巧用構(gòu)造器巧用構(gòu)造器Java中中String類的構(gòu)造器功能十分強(qiáng)大,提供了各種不同的入口類的構(gòu)造器功能十分強(qiáng)大,提供了各種不同的入口參數(shù)組合,開發(fā)人員可以按實際情況去選擇使用哪一種構(gòu)造器。參數(shù)組合,開發(fā)人員可以按實際情況去選擇使用哪一種構(gòu)造器。構(gòu)造器簽名功能public String(byte bytes)通過指定要解碼為字符的字節(jié)數(shù)組bytes按照默認(rèn)的編碼方式構(gòu)

18、造一個字符串對象public String(byte bytes,int offset,int length)以指定的bytes字節(jié)數(shù)組的offset索引處開始,長度為length的子數(shù)組作為解碼的內(nèi)容,并按照默認(rèn)的編碼方式構(gòu)造一個字符串對象public String(byte bytes,String charsetName)throws UnsupportedEncodingException通過指定要解碼為字符的字節(jié)數(shù)組bytes按照指定的charsetName編碼方式構(gòu)造一個字符串對象。該構(gòu)造器有可能拋出“UnsupportedEncodingException”異常public St

19、ring(byte bytes,int offset,int length,String charsetName) throws Unsupported Encoding Exception該構(gòu)造器將以指定的bytes字節(jié)數(shù)組的offset索引處開始,長度為length的子數(shù)組作為解碼的內(nèi)容,并按照指定的charsetName編碼方式構(gòu)造一個字符串對象。該構(gòu)造器有可能拋出“UnsupportedEncodingException”異常public String(char value)以指定的字符數(shù)組value中包含的字符序列作為字符串內(nèi)容,構(gòu)造一個字符串對象,創(chuàng)建后對字符數(shù)組value的修改不

20、會影響新創(chuàng)建的字符串對象。public String(char value,int offset,int count)構(gòu)造一個字符串對象,該對象中的內(nèi)容是指定的字符數(shù)組value的子數(shù)組為字符串內(nèi)容,offset參數(shù)是子數(shù)組在value數(shù)組中第一個字符的索引,count參數(shù)指定子數(shù)組的長度。創(chuàng)建后對字符數(shù)組value的修改不會影響新創(chuàng)建的字符串對象5.7.3 String5.7.3 String類的重要方法類的重要方法Java中的字符串是對象,所以其自身也具有一些功能方法。中的字符串是對象,所以其自身也具有一些功能方法。構(gòu)造器簽名功能public String(byte bytes)通過指定要

21、解碼為字符的字節(jié)數(shù)組bytes按照默認(rèn)的編碼方式構(gòu)造一個字符串對象public String(byte bytes,int offset,int length)以指定的bytes字節(jié)數(shù)組的offset索引處開始,長度為length的子數(shù)組作為解碼的內(nèi)容,并按照默認(rèn)的編碼方式構(gòu)造一個字符串對象public String(byte bytes,String charsetName)throws UnsupportedEncodingException通過指定要解碼為字符的字節(jié)數(shù)組bytes按照指定的charsetName編碼方式構(gòu)造一個字符串對象。該構(gòu)造器有可能拋出“UnsupportedEnco

22、dingException”異常public String(byte bytes,int offset,int length,String charsetName) throws Unsupported Encoding Exception該構(gòu)造器將以指定的bytes字節(jié)數(shù)組的offset索引處開始,長度為length的子數(shù)組作為解碼的內(nèi)容,并按照指定的charsetName編碼方式構(gòu)造一個字符串對象。該構(gòu)造器有可能拋出“UnsupportedEncodingException”異常public String(char value)以指定的字符數(shù)組value中包含的字符序列作為字符串內(nèi)容,構(gòu)造

23、一個字符串對象,創(chuàng)建后對字符數(shù)組value的修改不會影響新創(chuàng)建的字符串對象。public String(char value,int offset,int count)構(gòu)造一個字符串對象,該對象中的內(nèi)容是指定的字符數(shù)組value的子數(shù)組為字符串內(nèi)容,offset參數(shù)是子數(shù)組在value數(shù)組中第一個字符的索引,count參數(shù)指定子數(shù)組的長度。創(chuàng)建后對字符數(shù)組value的修改不會影響新創(chuàng)建的字符串對象5.7.4 String5.7.4 String的內(nèi)存機(jī)制的內(nèi)存機(jī)制本小節(jié)將為讀者詳細(xì)介紹本小節(jié)將為讀者詳細(xì)介紹Java中字符串對象的內(nèi)存機(jī)中字符串對象的內(nèi)存機(jī)制,主要包括如下內(nèi)容。制,主要包括如下內(nèi)

24、容。字符串常量池與簡單語法字符串常量池與簡單語法字符串常量池與字符串常量池與new語法語法永遠(yuǎn)不變的字符串對象永遠(yuǎn)不變的字符串對象繼承問題繼承問題1字符串常量池與簡單語法字符串常量池與簡單語法2字符串常量池與字符串常量池與new語法語法3永遠(yuǎn)不變的字符串對象永遠(yuǎn)不變的字符串對象4繼承問題繼承問題5.8 StringBuffer5.8 StringBuffer類類前面一節(jié)介紹了字符串特殊的內(nèi)存機(jī)制,了解了特殊前面一節(jié)介紹了字符串特殊的內(nèi)存機(jī)制,了解了特殊的內(nèi)存機(jī)制所帶來的優(yōu)點(diǎn)及缺點(diǎn)。為了彌補(bǔ)在連接操作中的內(nèi)存機(jī)制所帶來的優(yōu)點(diǎn)及缺點(diǎn)。為了彌補(bǔ)在連接操作中String類的缺點(diǎn),類的缺點(diǎn),Java中專

25、門提供了一個中專門提供了一個java.lang.StringBuffer類,本節(jié)將對其進(jìn)行詳細(xì)的介紹,主類,本節(jié)將對其進(jìn)行詳細(xì)的介紹,主要包括為什么要包括為什么StringBuffer類可以彌補(bǔ)類可以彌補(bǔ)String的不足,以及的不足,以及StringBuffer類的具體使用。類的具體使用。5.8.1 5.8.1 彌補(bǔ)彌補(bǔ)StringString不足的不足的StringBufferStringBuffer類類讀者已經(jīng)知道,當(dāng)對字符串連續(xù)做大量的連接操作時讀者已經(jīng)知道,當(dāng)對字符串連續(xù)做大量的連接操作時,會產(chǎn)生很多冗余的中間對象,這樣會使性能大幅下降。而,會產(chǎn)生很多冗余的中間對象,這樣會使性能大幅

26、下降。而Java中的中的StringBuffer類則沒有這樣的缺點(diǎn),該類的對象允類則沒有這樣的缺點(diǎn),該類的對象允許對其內(nèi)容進(jìn)行修改,而不產(chǎn)生冗余的中間對象。因此,當(dāng)許對其內(nèi)容進(jìn)行修改,而不產(chǎn)生冗余的中間對象。因此,當(dāng)需要對字符串做大量連接時,應(yīng)該使用需要對字符串做大量連接時,應(yīng)該使用StringBuffer類。類。StringBuffer對象的創(chuàng)建語法只有一種,即使用對象的創(chuàng)建語法只有一種,即使用new操操作符來創(chuàng)建對象,其語法格式如下。作符來創(chuàng)建對象,其語法格式如下。StringBuffer sb=new StringBuffer();5.8.1 5.8.1 彌補(bǔ)彌補(bǔ)StringString

27、不足的不足的StringBufferStringBuffer類類構(gòu)造器簽名功能public StringBuffer()該構(gòu)造器將構(gòu)造一個沒有任何內(nèi)容但初始容量為16個字符的StringBuffer對象public StringBuffer(int capacity)參數(shù)capacity為指定的容量數(shù),該構(gòu)造器將構(gòu)造一個沒有任何內(nèi)容但初始容量為capacity個字符的StringBuffer對象public StringBuffer(String str)參數(shù)str為指定的字符串,該構(gòu)造器將構(gòu)造一個內(nèi)容與指定字符傳str內(nèi)容相同的,初始容量為str長度加上16個字符的StringBuffer對

28、象5.8.2 5.8.2 編寫方法鏈以及編寫方法鏈以及StringBufferStringBuffer類的重要方類的重要方法法方法鏈?zhǔn)欠椒ㄦ準(zhǔn)荍ava中巧妙的代碼書寫格式,可以在一行內(nèi)中巧妙的代碼書寫格式,可以在一行內(nèi)完成許多操作。本小節(jié)將介紹完成許多操作。本小節(jié)將介紹StringBuffer類的一些重要方類的一些重要方法,同時會用到法,同時會用到Java中方法鏈的書寫語法,主要包括如下兩中方法鏈的書寫語法,主要包括如下兩個方面的內(nèi)容。個方面的內(nèi)容。編寫方法鏈編寫方法鏈StringBuffer類的重要方法類的重要方法1編寫方法鏈編寫方法鏈2StringBuffer類的重要方法類的重要方法5.9

29、 5.9 正則表達(dá)式正則表達(dá)式當(dāng)需要對字符串的內(nèi)容進(jìn)行分析、匹配等處理時,正當(dāng)需要對字符串的內(nèi)容進(jìn)行分析、匹配等處理時,正則表達(dá)式是一個非常強(qiáng)大的工具。而則表達(dá)式是一個非常強(qiáng)大的工具。而Java中為正則式處理提中為正則式處理提供了豐富的類庫資源,大大簡化了利用正則式進(jìn)行開發(fā)的工供了豐富的類庫資源,大大簡化了利用正則式進(jìn)行開發(fā)的工作。本節(jié)將介紹在作。本節(jié)將介紹在Java中如何進(jìn)行正則式應(yīng)用的開發(fā),主要中如何進(jìn)行正則式應(yīng)用的開發(fā),主要包括正則表達(dá)式的基本語法、包括正則表達(dá)式的基本語法、Pattern類與類與Matcher類使用等類使用等知識。知識。5.9.1 5.9.1 正則表達(dá)式的基本語法正則表

30、達(dá)式的基本語法所謂正則式就是一個特殊的字符串,可以用來表示一所謂正則式就是一個特殊的字符串,可以用來表示一種或幾種特定的匹配模式。在介紹種或幾種特定的匹配模式。在介紹Java中如何利用正則式進(jìn)中如何利用正則式進(jìn)行應(yīng)用開發(fā)之前,需要首先了解一下正則式本身的基本語法行應(yīng)用開發(fā)之前,需要首先了解一下正則式本身的基本語法。1字符字符2量詞量詞3邊界符邊界符4匹配次數(shù)的貪婪與非貪婪匹配次數(shù)的貪婪與非貪婪5分組以及組引用分組以及組引用6一個復(fù)雜的正則表達(dá)式一個復(fù)雜的正則表達(dá)式5.9.2 Pattern5.9.2 Pattern類簡介類簡介上一節(jié)介紹了正則式的一些基本語法,從本節(jié)開始將上一節(jié)介紹了正則式的一

31、些基本語法,從本節(jié)開始將介紹在介紹在Java中如何使用正則式。中如何使用正則式。Java的標(biāo)準(zhǔn)類庫中提供了一的標(biāo)準(zhǔn)類庫中提供了一個個java.util.regex.Pattern類,其對象表示通過編譯的正則式類,其對象表示通過編譯的正則式,利用該類對象可以與任意字符串進(jìn)行模式匹配。,利用該類對象可以與任意字符串進(jìn)行模式匹配。要特別注意的是,要特別注意的是,Pattern類的構(gòu)造器是類的構(gòu)造器是private的,因的,因此不能通過調(diào)用構(gòu)造器創(chuàng)建對象,而需要調(diào)用此不能通過調(diào)用構(gòu)造器創(chuàng)建對象,而需要調(diào)用Pattern類提類提供的靜態(tài)工廠方法來獲得對象。供的靜態(tài)工廠方法來獲得對象。5.9.3 Matc

32、her5.9.3 Matcher類簡介類簡介通常進(jìn)行模式匹配時,除了需要通常進(jìn)行模式匹配時,除了需要Pattern類對象外,還類對象外,還需要需要Matcher類的對象,該類的對象表示將要進(jìn)行模式匹配類的對象,該類的對象表示將要進(jìn)行模式匹配的字符串或字符序列。要注意的是的字符串或字符序列。要注意的是Matcher類對象一樣不能類對象一樣不能通過調(diào)用構(gòu)造器獲得,一般是通過通過調(diào)用構(gòu)造器獲得,一般是通過Pattern對象中的對象中的matcher方法得到,這在上一小節(jié)已經(jīng)介紹。方法得到,這在上一小節(jié)已經(jīng)介紹。當(dāng)通過當(dāng)通過Pattern對象生成了具有指定內(nèi)容的對象生成了具有指定內(nèi)容的Matcher對象對象后,就可以調(diào)用后,就可以調(diào)用Matcher對象的方法進(jìn)行匹配或替換的工作對象的方法進(jìn)行匹配或替換的工作。5.9.4 Pattern5.9.4 Pat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論