版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人民郵電出版社9常用實(shí)用類Java程序設(shè)計(jì)第章導(dǎo)讀Introduction本章介紹Java基礎(chǔ)類庫(kù)中一些常用的基礎(chǔ)類,包括字符串類與正則表達(dá)式、數(shù)學(xué)類、日期和日歷類、及包裝類。掌握這些常用類,可以有效地提高編程效率,提高程序的穩(wěn)定性。C目錄ONTENTS9.2正則表達(dá)式與字符串處理9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類9.6小結(jié)9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.1.1字符串處理問(wèn)題【例9.1】編寫一個(gè)用于統(tǒng)計(jì)給定字符串中大寫字母數(shù)的方法。Example9_01.java
Java中用于字符串處理的類主要包括String、StringBuffer、StringTokenizer、StringBuilder、StreamTokenizer?!纠?.2】編寫一方法從一給定字符串中刪去指定子串。Example9_02.java(字符串類的常用方法見(jiàn)表9.1)9.1.2字符串類1.String類用String類定義的字符串是不可變長(zhǎng)度字符串。對(duì)字符串可進(jìn)行求串長(zhǎng)度、返回子字符串、計(jì)算某子串的位置、判斷兩個(gè)字符串是否相等、字符串的比較、包含和連接等處理。用StringBuffer類定義的字符串是可變長(zhǎng)度字符串。可以借助具體的方法對(duì)其進(jìn)行包括字符串尾部追加、插入、內(nèi)容替換、字符串中刪除子串、字符串倒序、返回緩沖區(qū)容量等處理。2.StringBuffer類9.1.2字符串類3.String與StringBuffer區(qū)別構(gòu)造方法不同:String創(chuàng)建的字符串是常量,創(chuàng)建后不能改變;而StringBuffer創(chuàng)建的是緩沖區(qū),其字符串可以改變。成員方法不同:String類的成員方法以只讀數(shù)據(jù)為主,而StringBuffer的成員方法則可以讀寫字串。9.1.2字符串類4.StringTokenizer類有時(shí)需要將組成一個(gè)字符串的子串分別提取出來(lái),例如將一個(gè)英文句子中的各個(gè)單詞分別提取出來(lái),StringTokenizer類可用于完成此類處理?!纠?.3】使用StringTokenizer類的對(duì)象將一個(gè)英文句子中的各個(gè)單詞提取出來(lái)。Example9_03.java9.1.3StringBuilder類StringBuilder是JDK1.5推出的類。它與StringBuffer很相似。在單線程情況下使用它要比使用String和StringBuffer執(zhí)行效率高。這個(gè)類定義在System.text包中。其用法和StringBuffer基本相同。9.1.4StreamTokenizer類StringTokenizer用于字符串的拆分有很大的局限性,主要問(wèn)題是方法少,用于解析多行文本組成的文本文件時(shí)功能較弱。
StreamTokenizer定義了幾種常量用于標(biāo)識(shí)解析過(guò)程:TT_EOF(流結(jié)尾)、TT_EOL(行結(jié)尾)、TT_NUMBER(數(shù)字符號(hào),0123456789)、TT_WORD(一個(gè)單詞)。該類定義在java.io包中。9.1.4StreamTokenizer類【例9.4】StreamTokenizer應(yīng)用例程。Example9_04.javaStreamTokenizer的常用方法下頁(yè)續(xù)表9.1.4StreamTokenizer類9.1.5使用Scanner解析字符串利用Scanner類的對(duì)象可以從字符串讀取數(shù)據(jù)。如果從字符串中讀數(shù)據(jù)則應(yīng)采用下面的形式實(shí)例化一個(gè)Scanner類的對(duì)象:Scannerinput=newScanner(字符串對(duì)象);【例9.5】有一個(gè)購(gòu)物清單:電視機(jī)3200.00元,智能手機(jī)2200.00元,筆記本4200.00元,午餐120.25元統(tǒng)計(jì)該次購(gòu)物共花費(fèi)多少?Example9_05.javaC目錄ONTENTS9.2正則表達(dá)式與字符串處理9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類9.6小結(jié)9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.2.1
正則表達(dá)式1.
正則表達(dá)式的概念正則表達(dá)式使用一個(gè)字符串來(lái)描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。正則表達(dá)式使用元字符和特殊字符來(lái)描述字符串的組成。2.正則表達(dá)式的語(yǔ)法正則表達(dá)式主要包括元字符、特殊字符和限定符。一個(gè)正則表達(dá)式就是用這三種符號(hào)組成的。元字符、特殊字符和限定符如表9.5、9.6和9.7所示。9.2.1
正則表達(dá)式2.正則表達(dá)式的語(yǔ)法正則表達(dá)式中可以用方括號(hào)將多個(gè)字符括起來(lái)表示一個(gè)元字符:[abc]表示a、b、c中的任何一個(gè)字符;[^abc]表示除a、b、c之外的任何字符;[a-c]表示a至c的任何一個(gè)字符;[a-c[m-t]]表示a至c或m至t中的任何字符;[a-j&&[i-k]]表示i、j之中的任何一個(gè)字符;[a-k&&[^ab]]表示c-k中任何一個(gè)字符。9.2.1
正則表達(dá)式2.正則表達(dá)式的語(yǔ)法下面是幾個(gè)常用的正則表達(dá)式:驗(yàn)證Email地址:"\\w{1,}@\\w{1,}\56\\w{1,}";驗(yàn)證電話號(hào)碼:"^(\\d{3,4})?-\\d{7,8}$";驗(yàn)證身份證號(hào)(15位或18位數(shù)字):"^\\d{15}|\\d{18}$";只能輸入數(shù)字:"^[0-9]*$";只能輸入n位的數(shù)字:"^\\d{n}$"?!纠?.6】用正則表達(dá)式驗(yàn)證標(biāo)識(shí)符的合法性。定義標(biāo)識(shí)符的規(guī)則是,第1個(gè)字符必須是字母、$、下劃線或漢字,其后的字符可以是字母、數(shù)字、$、下劃線或漢字。Example9_06.java9.2.2Pattern類和Matcher類
java.util.regex.Pattern和java.util.regex.Matcher是用于模式匹配的類,模式對(duì)象封裝了正則表達(dá)式。Matcher對(duì)象方法則主要針對(duì)匹配結(jié)果進(jìn)行處理,下面用代碼段示例說(shuō)明。Stringregex=“[a-z]at”;Stringstr=“afatcatandaratwereeatingoatinthevat.”;Patternp=Ppile(regex);Matcherm=p.matcher(str);while(m.find())//find()判斷m中是否存在與regex匹配的子串{Strings=m.group();//group()返回匹配的子串System.out.println(s);}C目錄ONTENTS9.2正則表達(dá)式與字符串處理9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類9.6小結(jié)9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類數(shù)學(xué)計(jì)算是程序的基本任務(wù)。Java中有幾個(gè)類和數(shù)學(xué)計(jì)算有密切關(guān)系,包括Math(數(shù)學(xué)類)、Random(隨機(jī)數(shù)類)、BigInteger(大整型數(shù)類)、NumberFormat(數(shù)據(jù)格式類)、DecimalFormat(小數(shù)格式類)、Formatter(格式化器類)。用這些類可以完成一些數(shù)據(jù)的計(jì)算與格式化。【例9.7】計(jì)算1!+3!+5!+7!+……前30項(xiàng)之和Example9_07.java9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類Math類主要進(jìn)行常用的數(shù)學(xué)計(jì)算,如取絕對(duì)值abs()、求最大值max()、求最小值min()、產(chǎn)生隨機(jī)數(shù)random()、乘冪pow()、平方根sqrt()、對(duì)數(shù)log()、三角函數(shù)運(yùn)算等。此外,類中還定義了自然對(duì)數(shù)底數(shù)和圓周率兩個(gè)常數(shù)。Math類的所有屬性和方法都是靜態(tài)的,所以可直接通過(guò)Math類名訪問(wèn)相應(yīng)的成員,如Math.PI、Math.E、Math.sqrt(2)、Math.sin(Math.toRadians(30))等。9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類Random類主要用于產(chǎn)生隨機(jī)數(shù),它的主要方法包括nextBoolean()、nextBytes()、nextDouble()、nextInt()、nextInt(intn)、nextLong()、setSeed()等,其中nextInt(intn)方法可以生成指定范圍0到n(包括0和不包括n)的隨機(jī)整數(shù)。NumberFormat、DecimalFormat和Formatter類主要用于控制數(shù)值數(shù)據(jù)的輸出格式?!纠?.8】用Formatter定義輸出格式。程序代碼詳見(jiàn)Example9_08.java。C目錄ONTENTS9.2正則表達(dá)式與字符串處理9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類9.6小結(jié)9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.4.1日期類Date在Java中可以使用日期類Date和日歷類Calendar進(jìn)行時(shí)間和日期數(shù)據(jù)的處理。Date類在包java.util中,常用方法如下表所示。返回類型方法名功能booleanafter(Dated)測(cè)試此日期是否在指定日期之后booleanbefore(Dated)測(cè)試此日期是否在指定日期之前intcompareTo(Dated)比較兩個(gè)日期的順序longgetTime()返回自格林尼治GMT1970年1月1日00:00:00以來(lái)此Date對(duì)象表示的毫秒數(shù)9.4.2日歷類Calendar日歷類Calendar也在java.util包中定義,常用方法如下表所示。9.4.2日歷類Calendar【例9.11】俗話說(shuō),“三天打魚(yú),兩天曬網(wǎng)”。某漁民從2010年1月1日起,連續(xù)打三天魚(yú),然后休息兩天,再連續(xù)打三天魚(yú),再休息兩天,……,一起重復(fù)這個(gè)勞作過(guò)程。問(wèn),從2010年1月1日起的某一天,該漁民是在打魚(yú),還是在休息。代碼詳見(jiàn)Example9_11.javaC目錄ONTENTS9.2正則表達(dá)式與字符串處理9.3數(shù)學(xué)計(jì)算與數(shù)學(xué)類9.6小結(jié)9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.5包裝類
Java為其8個(gè)基本數(shù)據(jù)類型設(shè)計(jì)的對(duì)應(yīng)類統(tǒng)稱為包裝類(WrapperClass)。類中封裝了基本類型數(shù)據(jù)運(yùn)算所需的屬性值和轉(zhuǎn)換方法,彌補(bǔ)了基本類型數(shù)據(jù)沒(méi)有面向?qū)ο筇卣髦蛔?。這8個(gè)類都定義在java.lang包中,包括Byte、Short、Character、Integer、Long、Float、Double和Boolean。下表所示是Integer類的屬性和常用方法,其他類有相似名字的方法,這些方法不在此列出。9.5包裝類Integer類的屬性和常用方法
9.5包裝類
如用整型類的對(duì)象表示整型數(shù)123,則可以寫成:
Integeri=Integer.valueOf(123);可以調(diào)用方法intValue()得到整型類對(duì)象表示的整型數(shù),表達(dá)式Value()的值就是一個(gè)整型數(shù)。為了便于在基本類型數(shù)據(jù)和包裝類對(duì)象之間進(jìn)行數(shù)據(jù)變換,Java有自動(dòng)裝箱(Autoboxing)和自動(dòng)拆箱(Unboxing)操作。如下面的語(yǔ)句:
Integeri=10;10是一個(gè)基本數(shù)類型,將其賦給i前用Integer.valueOf(10)自動(dòng)生成一個(gè)Integer的對(duì)象然后再賦給i。將基本類型數(shù)據(jù)自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)包裝類的對(duì)象的過(guò)程稱為自動(dòng)裝箱。
9.5包裝類
i是一個(gè)整型數(shù)的對(duì)象,則在下面的語(yǔ)句中
intt=i;i和t不是同一類型,在賦值前,可以用Value()得到i所表示的整型數(shù)后再賦給整型變換t。這種直接將包裝類的對(duì)象自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的基本數(shù)據(jù)類型數(shù)據(jù)的過(guò)程稱為自動(dòng)拆箱。同樣地,表達(dá)式i*2先將i自動(dòng)拆箱得到整型數(shù)后再與2相乘。如果將一個(gè)數(shù)字字符串轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值型數(shù),則可以調(diào)用類方法parseXXX()。如將字符串“123”轉(zhuǎn)換成對(duì)應(yīng)的整型數(shù)123,則可以用表達(dá)式:Integer.parseInt(“123”)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建省網(wǎng)絡(luò)與信息安全測(cè)評(píng)中心招聘駕駛員2人備考題庫(kù)含答案
- 2026陜西延安大學(xué)專職輔導(dǎo)員招聘15人備考題庫(kù)附答案
- 2025年中級(jí)老年照護(hù)試題及答案
- 2026中國(guó)華電集團(tuán)有限公司廣東公司本部及科創(chuàng)中心一般管理人員招聘7人備考題庫(kù)完美版
- 2026芒果TV《奪金2026》實(shí)習(xí)生招募備考題庫(kù)及答案詳解(新)
- 2026湖北襄陽(yáng)軸承公司一線人員招聘?jìng)淇碱}庫(kù)(含答案詳解)
- 私域流量運(yùn)營(yíng)師數(shù)據(jù)驅(qū)動(dòng)檢驗(yàn)試題及答案
- 2026器樂(lè)教學(xué)創(chuàng)新思維評(píng)價(jià)試題及答案
- 2026黑龍江哈爾濱工業(yè)大學(xué)國(guó)際教育學(xué)院理科兼職教師招聘?jìng)淇碱}庫(kù)及答案詳解(新)
- 學(xué)術(shù)寫作能力選拔流程試題及答案
- 贛州市章貢區(qū)2026年社區(qū)工作者(專職網(wǎng)格員)招聘【102人】考試參考題庫(kù)及答案解析
- 江蘇高職單招培訓(xùn)課件
- 2026年山東理工職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)氟樹(shù)脂行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報(bào)告
- DB1331∕T 109-2025 雄安新區(qū)建設(shè)工程抗震設(shè)防標(biāo)準(zhǔn)
- Scratch講座課件教學(xué)課件
- 《低碳醫(yī)院評(píng)價(jià)指南》(T-SHWSHQ 14-2025)
- 質(zhì)量環(huán)境及職業(yè)健康安全三體系風(fēng)險(xiǎn)和機(jī)遇識(shí)別評(píng)價(jià)分析及控制措施表(包含氣候變化)
- 四川省石室中學(xué)2025-2026學(xué)年高一上數(shù)學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
- DB32/T+4539-2023+淡水生物環(huán)境DNA監(jiān)測(cè)技術(shù)方法
- 火電廠鍋爐運(yùn)行與維護(hù)
評(píng)論
0/150
提交評(píng)論