《Java實(shí)用程序設(shè)計(jì)(西電版)第6章常用預(yù)定義類》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java實(shí)用程序設(shè)計(jì)(西電版)第6章常用預(yù)定義類(60頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、1 第 6 章 常用預(yù)定義類第 6 章 常 用 預(yù) 定 義 類6.1 字符串操作6.2 正則表達(dá)式6.3 數(shù)學(xué)運(yùn)算與隨機(jī)數(shù)6.4 Arrays類6.5 基本類型與包裝類(Wrapper) 2 第 6 章 常用預(yù)定義類 6.1 字 符 串 操 作 1. String字符串操作是計(jì)算機(jī)程序中最常見的行為之一。在Java中,String是一種引用類型,Java程序中的String對(duì)象總是不可變的,String類中每個(gè)與String值的修改相關(guān)的方法,實(shí)際上都會(huì)創(chuàng)建一個(gè)新的String對(duì)象,以包含修改后的字符串的內(nèi)容。 3 第 6 章 常用預(yù)定義類 4 第 6 章 常用預(yù)定義類 5 第 6 章 常用預(yù)
2、定義類 6 第 6 章 常用預(yù)定義類 7 第 6 章 常用預(yù)定義類 8 第 6 章 常用預(yù)定義類 9 第 6 章 常用預(yù)定義類2. StringBuilder StringBuilder類是早期StringBuffer類的一個(gè)性能更高的替代者,提供了與StringBuffer兼容的API。與StringBuffer相比,StringBuilder是非同步的。一般情況下優(yōu)先使用StringBuilder,只有在需要線程同步時(shí)才考慮使用StringBuffer。 10 第 6 章 常用預(yù)定義類 11 第 6 章 常用預(yù)定義類 12 第 6 章 常用預(yù)定義類 13 第 6 章 常用預(yù)定義類 14 第
3、 6 章 常用預(yù)定義類3. CharSequence在Java中,接口CharSequence包含了從String、StringBuffer、StringBuilder等類中抽象出的字符序列的一般操作,見表6-2。后續(xù)介紹的正則表達(dá)式的多數(shù)操作都接受CharSequence類型的對(duì)象。 15 第 6 章 常用預(yù)定義類 16 第 6 章 常用預(yù)定義類4. Scanner 在J2SE 5.0中,引入了java.util.Scanner類來實(shí)現(xiàn)從文本或標(biāo)準(zhǔn)輸入方便地讀取數(shù)據(jù)。Scanner的構(gòu)造方法可以接受多種輸入對(duì)象,如File、InputStream、String、Readable等。有了Sca
4、nner對(duì)象之后,所有的輸入、分詞的操作都可以通過不同類型的next方法來完成。所有的基本類型(除char之外)都有對(duì)應(yīng)的next方法,一般next()方法則返回String對(duì)象。所有的next方法,都只有在找到了一個(gè)完整的分詞之后才會(huì)返回。Scanner類還包含hasNext()方法幫助判斷下一個(gè)輸入分詞是否為所需的類型。 17 第 6 章 常用預(yù)定義類 18 第 6 章 常用預(yù)定義類 19 第 6 章 常用預(yù)定義類5. StringTokenizerStringTokenizer類是一個(gè)實(shí)現(xiàn)Enumeration接口的類,它使得應(yīng)用程序可以將字符串分成多個(gè)記號(hào)(token)。分隔的依據(jù)是分
5、隔符(delimiter),所謂分隔符,指的是字符串中用于分隔記號(hào)的字符。在默認(rèn)情況下,分隔符為空格,例如將字符串“this is a test”分成四個(gè)單詞記號(hào)。用戶也可以指定分隔符。 20 第 6 章 常用預(yù)定義類 21 第 6 章 常用預(yù)定義類 22 第 6 章 常用預(yù)定義類 6.2 正 則 表 達(dá) 式正則表達(dá)式是一種很強(qiáng)大的文本處理工具,早在Java出現(xiàn)之前,它就已被用在Unix工具集中。1. 正 則 表 達(dá) 式 的 創(chuàng) 建為了編寫能夠完成一般文本處理任務(wù)的正則表達(dá)式,本節(jié)介紹一些常用的正則表達(dá)式構(gòu)造子。正則表達(dá)式中使用的字符的典型形式如表6-3所示。 23 第 6 章 常用預(yù)定義類
6、24 第 6 章 常用預(yù)定義類 25 第 6 章 常用預(yù)定義類 26 第 6 章 常用預(yù)定義類 27 第 6 章 常用預(yù)定義類 28 第 6 章 常用預(yù)定義類2. 通 過 String使 用 正 則 表 達(dá) 式在介紹String類的主要接口方法及其含義(表6-1)時(shí),我們遺留了一些與正則表達(dá)式相關(guān)的String操作,如表6-8所示。 29 第 6 章 常用預(yù)定義類 30 第 6 章 常用預(yù)定義類 31 第 6 章 常用預(yù)定義類 32 第 6 章 常用預(yù)定義類例 6-9 StringReplacement.java: 字 符 串 替 換 操 作。 33 第 6 章 常用預(yù)定義類3. 通 過 Pa
7、ttern和 Matcher使 用 正 則 表 達(dá) 式相比直接使用String類與正則表達(dá)式相關(guān)的方法,使用java.util.regex包中的Pattern類和Matcher類進(jìn)行正則表達(dá)式操作能夠?qū)崿F(xiàn)更為強(qiáng)大的功能。Pattern對(duì)象就是編譯好的正則表達(dá)式,可以應(yīng)用于任意多個(gè)字符串,而Matcher對(duì)象則對(duì)應(yīng)于單獨(dú)的字符串實(shí)例,表示將正則表達(dá)式應(yīng)用于具體的目標(biāo)字符串上。 34 第 6 章 常用預(yù)定義類 35 第 6 章 常用預(yù)定義類 36 第 6 章 常用預(yù)定義類 37 第 6 章 常用預(yù)定義類 38 第 6 章 常用預(yù)定義類查找和替換也是正則表達(dá)式的常用操作,第6.2節(jié)已經(jīng)介紹了使用St
8、ring的方法進(jìn)行的查找和替換。Matcher類的replaceFirst(String)方法以參數(shù)字符串替換掉第一個(gè)匹配成功的字符串,replaceAll(String)方法以參數(shù)字符串替換掉所有匹配成功的字符串。假設(shè)s為輸入字符串,regex為正則表達(dá)式字符串,s2為替換字符串,那么 s.replaceAll(regex,s2) 39 第 6 章 常用預(yù)定義類等價(jià)于 Ppile(regex).matcher(s).replaceAll(s2)且 s.replaceFirst(regex,s2)等價(jià)于 Ppile(regex).matcher(s).replaceFirst(s2) 40 第
9、 6 章 常用預(yù)定義類 41 第 6 章 常用預(yù)定義類 42 第 6 章 常用預(yù)定義類 43 第 6 章 常用預(yù)定義類4. 通 過 Scanner使 用 正 則 表 達(dá) 式Scanner類除了能夠掃描基本類型之外,還能夠與自定義的正則表達(dá)式配合進(jìn)行掃描。在例6-14中,使用hasNext()方法檢查下一個(gè)記號(hào)是否與指定正則表達(dá)式pattern匹配,如果匹配,就通過next()方法找到這一輸入部分,然后調(diào)用match()方法獲得匹配的結(jié)果。匹配結(jié)果是MatchResult類型,能夠通過group()方法獲得正則表達(dá)式中指定的組所對(duì)應(yīng)的匹配子串。 44 第 6 章 常用預(yù)定義類 45 第 6 章
10、常用預(yù)定義類 46 第 6 章 常用預(yù)定義類 6.3 數(shù) 學(xué) 運(yùn) 算 與 隨 機(jī) 數(shù) 1. MathMath類包含了基本數(shù)學(xué)函數(shù)所對(duì)應(yīng)的方法,這些方法一般可分為3類:三角函數(shù)方法(表6-9)、指數(shù)函數(shù)方法(表6-10)、浮點(diǎn)數(shù)操作方法(表6-11)和其他服務(wù)方法(表6-12)。 47 第 6 章 常用預(yù)定義類 48 第 6 章 常用預(yù)定義類 49 第 6 章 常用預(yù)定義類 50 第 6 章 常用預(yù)定義類 51 第 6 章 常用預(yù)定義類2. Random表6-12介紹的Math.random()方法提供了一種生成隨機(jī)值的簡便方法。本節(jié)將介紹更為復(fù)雜和強(qiáng)大的隨機(jī)數(shù)生成類java.util.Rand
11、om。Random類的實(shí)例能夠用于實(shí)現(xiàn)一系列的偽隨機(jī)數(shù),該類使用一個(gè)48位的種子,構(gòu)造Random對(duì)象時(shí),可以為其指定一個(gè)long類型的種子。如果Random類的兩個(gè)對(duì)象實(shí)例使用了同一個(gè)種子,且同樣的方法調(diào)用序列應(yīng)用于其上,那么它們會(huì)產(chǎn)生同樣的偽隨機(jī)數(shù)序列。Random類的接口方法及其含義如表6-13所示。 52 第 6 章 常用預(yù)定義類 53 第 6 章 常用預(yù)定義類 6.4 Arrays類java.util包中的Arrays類包含了很多實(shí)用的數(shù)組處理方法,包括對(duì)數(shù)組的排序、查找、比較和元素填充等,這些方法均為靜態(tài)方法,詳見表6-14。 54 第 6 章 常用預(yù)定義類 55 第 6 章 常用
12、預(yù)定義類 56 第 6 章 常用預(yù)定義類 57 第 6 章 常用預(yù)定義類 6.5 基 本 類 型 與 包 裝 類 (Wrapper)本節(jié)將介紹包裝類(Wrapper)的概念。Java為每一種基本數(shù)據(jù)類型提供相應(yīng)的Wrapper類,這些Wrapper類都在java.lang包中。Wrapper類的基本用法是能夠?qū)⒒绢愋偷闹捣庋b為一個(gè)Wrapper對(duì)象。各種基本數(shù)據(jù)類型對(duì)應(yīng)的Wrapper類可見表6-15。所有Wrapper類均以java.lang.Number類作為共同的抽象父類。 58 第 6 章 常用預(yù)定義類 59 第 6 章 常用預(yù)定義類 60 第 6 章 常用預(yù)定義類在例6-15中,在構(gòu)造Interger類型的對(duì)象a和b時(shí),通過自動(dòng)裝箱對(duì)25和23進(jìn)行封裝,而在兩次println()方法調(diào)用中,Interger對(duì)象可以自動(dòng)拆箱為基本類型數(shù)據(jù),然后通過String.valueOf()方法轉(zhuǎn)換為字符串,或進(jìn)行相加運(yùn)算。