版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
人民郵電出版社9常用實用類Java程序設計第章導讀Introduction本章介紹Java基礎類庫中一些常用的基礎類,包括字符串類與正則表達式、數(shù)學類、日期和日歷類、及包裝類。掌握這些常用類,可以有效地提高編程效率,提高程序的穩(wěn)定性。C目錄ONTENTS9.2正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6Object類9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.7System類9.8小結9.1.1字符串處理問題【例9.1】編寫一個用于統(tǒng)計給定字符串中大寫字母數(shù)的方法。Example9_01.java
Java中用于字符串處理的類主要包括String、StringBuffer、StringTokenizer、StringBuilder、StreamTokenizer?!纠?.2】編寫一方法從一給定字符串中刪去指定子串。Example9_02.java(字符串類的常用方法見表9.1)9.1.2字符串類1.String類用String類定義的字符串是不可變長度字符串。對字符串可進行求串長度、返回子字符串、計算某子串的位置、判斷兩個字符串是否相等、字符串的比較、包含和連接等處理。用StringBuffer類定義的字符串是可變長度字符串??梢越柚唧w的方法對其進行包括字符串尾部追加、插入、內容替換、字符串中刪除子串、字符串倒序、返回緩沖區(qū)容量等處理。2.StringBuffer類9.1.2字符串類3.String與StringBuffer區(qū)別構造方法不同:String創(chuàng)建的字符串是常量,創(chuàng)建后不能改變;而StringBuffer創(chuàng)建的是緩沖區(qū),其字符串可以改變。成員方法不同:String類的成員方法以只讀數(shù)據(jù)為主,而StringBuffer的成員方法則可以讀寫字串。9.1.2字符串類4.StringTokenizer類有時需要將組成一個字符串的子串分別提取出來,例如將一個英文句子中的各個單詞分別提取出來,StringTokenizer類可用于完成此類處理?!纠?.3】使用StringTokenizer類的對象將一個英文句子中的各個單詞提取出來。Example9_03.java9.1.3StringBuilder類StringBuilder是JDK1.5推出的類。它與StringBuffer很相似。在單線程情況下使用它要比使用String和StringBuffer執(zhí)行效率高。這個類定義在System.text包中。其用法和StringBuffer基本相同。9.1.4StreamTokenizer類StringTokenizer用于字符串的拆分有很大的局限性,主要問題是方法少,用于解析多行文本組成的文本文件時功能較弱。
StreamTokenizer定義了幾種常量用于標識解析過程:TT_EOF(流結尾)、TT_EOL(行結尾)、TT_NUMBER(數(shù)字符號,0123456789)、TT_WORD(一個單詞)。該類定義在java.io包中。9.1.4StreamTokenizer類【例9.4】StreamTokenizer應用例程。Example9_04.javaStreamTokenizer的常用方法下頁續(xù)表9.1.4StreamTokenizer類9.1.5使用Scanner解析字符串利用Scanner類的對象可以從字符串讀取數(shù)據(jù)。如果從字符串中讀數(shù)據(jù)則應采用下面的形式實例化一個Scanner類的對象:Scannerinput=newScanner(字符串對象);【例9.5】有一個購物清單:電視機3200.00元,智能手機2200.00元,筆記本4200.00元,午餐120.25元統(tǒng)計該次購物共花費多少?Example9_05.javaC目錄ONTENTS9.2正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6Object類9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.7System類9.8小結9.2.1
正則表達式1.
正則表達式的概念正則表達式使用一個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。正則表達式使用元字符和特殊字符來描述字符串的組成。2.正則表達式的語法正則表達式主要包括元字符、特殊字符和限定符。一個正則表達式就是用這三種符號組成的。元字符、特殊字符和限定符如表9.5、9.6和9.7所示。9.2.1
正則表達式2.正則表達式的語法正則表達式中可以用方括號將多個字符括起來表示一個元字符:[abc]表示a、b、c中的任何一個字符;[^abc]表示除a、b、c之外的任何字符;[a-c]表示a至c的任何一個字符;[a-c[m-t]]表示a至c或m至t中的任何字符;[a-j&&[i-k]]表示i、j之中的任何一個字符;[a-k&&[^ab]]表示c-k中任何一個字符。9.2.1
正則表達式2.正則表達式的語法下面是幾個常用的正則表達式:驗證Email地址:"\\w{1,}@\\w{1,}\56\\w{1,}";驗證電話號碼:"^(\\d{3,4})?-\\d{7,8}$";驗證身份證號(15位或18位數(shù)字):"^\\d{15}|\\d{18}$";只能輸入數(shù)字:"^[0-9]*$";只能輸入n位的數(shù)字:"^\\d{n}$"?!纠?.6】用正則表達式驗證標識符的合法性。定義標識符的規(guī)則是,第1個字符必須是字母、$、下劃線或漢字,其后的字符可以是字母、數(shù)字、$、下劃線或漢字。Example9_06.java9.2.2Pattern類和Matcher類
java.util.regex.Pattern和java.util.regex.Matcher是用于模式匹配的類,模式對象封裝了正則表達式。Matcher對象方法則主要針對匹配結果進行處理,下面用代碼段示例說明。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正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6小結9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.3數(shù)學計算與數(shù)學類數(shù)學計算是程序的基本任務。Java中有幾個類和數(shù)學計算有密切關系,包括Math(數(shù)學類)、Random(隨機數(shù)類)、BigInteger(大整型數(shù)類)、NumberFormat(數(shù)據(jù)格式類)、DecimalFormat(小數(shù)格式類)、Formatter(格式化器類)。用這些類可以完成一些數(shù)據(jù)的計算與格式化?!纠?.7】計算1!+3!+5!+7!+……前30項之和Example9_07.java9.3數(shù)學計算與數(shù)學類Math類主要進行常用的數(shù)學計算,如取絕對值abs()、求最大值max()、求最小值min()、產生隨機數(shù)random()、乘冪pow()、平方根sqrt()、對數(shù)log()、三角函數(shù)運算等。此外,類中還定義了自然對數(shù)底數(shù)和圓周率兩個常數(shù)。Math類的所有屬性和方法都是靜態(tài)的,所以可直接通過Math類名訪問相應的成員,如Math.PI、Math.E、Math.sqrt(2)、Math.sin(Math.toRadians(30))等。9.3數(shù)學計算與數(shù)學類Random類主要用于產生隨機數(shù),它的主要方法包括nextBoolean()、nextBytes()、nextDouble()、nextInt()、nextInt(intn)、nextLong()、setSeed()等,其中nextInt(intn)方法可以生成指定范圍0到n(包括0和不包括n)的隨機整數(shù)。NumberFormat、DecimalFormat和Formatter類主要用于控制數(shù)值數(shù)據(jù)的輸出格式?!纠?.8】用Formatter定義輸出格式。程序代碼詳見Example9_08.java。C目錄ONTENTS9.2正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6Object類9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.7System類9.8小結9.4.1日期類Date在Java中可以使用日期類Date和日歷類Calendar進行時間和日期數(shù)據(jù)的處理。Date類在包java.util中,常用方法如下表所示。返回類型方法名功能booleanafter(Dated)測試此日期是否在指定日期之后booleanbefore(Dated)測試此日期是否在指定日期之前intcompareTo(Dated)比較兩個日期的順序longgetTime()返回自格林尼治GMT1970年1月1日00:00:00以來此Date對象表示的毫秒數(shù)9.4.2日歷類Calendar日歷類Calendar也在java.util包中定義,常用方法如下表所示。9.4.2日歷類Calendar【例9.11】俗話說,“三天打魚,兩天曬網(wǎng)”。某漁民從2010年1月1日起,連續(xù)打三天魚,然后休息兩天,再連續(xù)打三天魚,再休息兩天,……,一起重復這個勞作過程。問,從2010年1月1日起的某一天,該漁民是在打魚,還是在休息。代碼詳見Example9_11.java9.4.3本地時間類Java8之前,處理日期時間的類是Date、Calendar,這兩個類在使用起來很不方便,如Date類月份計算是從0開始。不僅不支持時區(qū),代碼繁瑣、性能低,并且還不是線程安全的。在JDK8發(fā)布的時候,推出了LocalDate、LocalTime、LocalDateTime這個三個時間處理類,以此來彌補之前的日期時間類的不足,簡化日期時間的操作9.4.3本地時間類LocalDate——不包含具體時間的日期。它可以用來存儲生日,入職日期等。LocalTime——它代表的是不含日期的時間。LocalDateTime——它包含了日期及時間,不過還是沒有偏移信息或者說時區(qū)。LocalDateTime可以設置年月日時分秒,相當于LocalDate+LocalTime。ZonedDateTime——這是一個包含時區(qū)的完整的日期時間,偏移量是以UTC/格林威治時間為基準的。LocalDate的常用方法://調用now()函數(shù)獲取今天的日期LocalDatetoday=LocalDate.now();//調用getDayOfMonth()獲取今天是幾號intdayofMonth=today.getDayOfMonth();//取本月最后一天,再也不用計算是28,29,30還是31:LocalDatelastDayOfThisMonth=today.with(TemporalAdjusters.lastDayOfMonth());//2022-02-28C目錄ONTENTS9.2正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6Object類9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.7System類9.8小結9.5包裝類
Java為其8個基本數(shù)據(jù)類型設計的對應類統(tǒng)稱為包裝類(WrapperClass)。類中封裝了基本類型數(shù)據(jù)運算所需的屬性值和轉換方法,彌補了基本類型數(shù)據(jù)沒有面向對象特征之不足。這8個類都定義在java.lang包中,包括Byte、Short、Character、Integer、Long、Float、Double和Boolean。下表所示是Integer類的屬性和常用方法,其他類有相似名字的方法,這些方法不在此列出。9.5包裝類Integer類的屬性和常用方法
9.5包裝類
如用整型類的對象表示整型數(shù)123,則可以寫成:
Integeri=Integer.valueOf(123);可以調用方法intValue()得到整型類對象表示的整型數(shù),表達式Value()的值就是一個整型數(shù)。為了便于在基本類型數(shù)據(jù)和包裝類對象之間進行數(shù)據(jù)變換,Java有自動裝箱(Autoboxing)和自動拆箱(Unboxing)操作。如下面的語句:
Integeri=10;10是一個基本數(shù)類型,將其賦給i前用Integer.valueOf(10)自動生成一個Integer的對象然后再賦給i。將基本類型數(shù)據(jù)自動轉換成對應包裝類的對象的過程稱為自動裝箱。
9.5包裝類
i是一個整型數(shù)的對象,則在下面的語句中
intt=i;i和t不是同一類型,在賦值前,可以用Value()得到i所表示的整型數(shù)后再賦給整型變換t。這種直接將包裝類的對象自動轉換成對應的基本數(shù)據(jù)類型數(shù)據(jù)的過程稱為自動拆箱。同樣地,表達式i*2先將i自動拆箱得到整型數(shù)后再與2相乘。如果將一個數(shù)字字符串轉換成對應的數(shù)值型數(shù),則可以調用類方法parseXXX()。如將字符串“123”轉換成對應的整型數(shù)123,則可以用表達式:Integer.parseInt(“123”)C目錄ONTENTS9.2正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6Object類9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.7System類9.8小結
9.6Object類
Object類是所有類的祖先類,Java的所有類都直接或間接繼承了Object類。Object類可以顯式繼承,也可以隱式繼承,以下兩種方式時,其結果是一樣的:顯式繼承:publicclassTeacherextendsObject{}隱式繼承:publicclassTeacher{}
C目錄ONTENTS9.2正則表達式與字符串處理9.3數(shù)學計算與數(shù)學類9.6Object類9.1字符串處理與字符串類9.4日期和日歷類9.5包裝類9.7System類9.8小結
9.7System類
System類代表程序所在系統(tǒng)提供了對應的一些系統(tǒng)屬性信息和系統(tǒng)操作。系統(tǒng)級的很多屬性和控制方法都放置在該類的內部。System中包含了in、out和err三個成員變量,分別代表標準輸入流(鍵盤輸入)、標準輸出流(顯示器)和標準錯誤輸出流(顯示器)。publicfinalstaticIn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度床上用品行業(yè)數(shù)據(jù)共享與分析合同3篇
- 2024石料批發(fā)市場運營與管理采購合同3篇
- 2024熟料綠色采購與節(jié)能減排合作協(xié)議3篇
- 2025年會展中心場地租賃分成及會展服務合同3篇
- 二零二五年度餐飲企業(yè)冷鏈物流配送合同9篇
- 2024年高性能電動汽車交易協(xié)議一
- 專項不良資產盡職調查服務協(xié)議版
- 2024稅務代理委托合同樣本
- 2024離婚協(xié)議范本及注意事項
- 2025年健康醫(yī)療大數(shù)據(jù)分析承包合同2篇
- MT/T 199-1996煤礦用液壓鉆車通用技術條件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力學性能試驗第1部分:桌類強度和耐久性
- 第三方在線糾紛解決機制(ODR)述評,國際商法論文
- 第5章-群體-團隊溝通-管理溝通
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 深基坑-安全教育課件
- 園林施工管理大型園林集團南部區(qū)域養(yǎng)護標準圖例
- 排水許可申請表
- 低血糖的觀察和護理課件
- 計量檢定校準技術服務合同協(xié)議書
評論
0/150
提交評論