Java編程技術(shù)與項(xiàng)目實(shí)戰(zhàn) 課件 第10章字符串和常用類庫(kù)_第1頁(yè)
Java編程技術(shù)與項(xiàng)目實(shí)戰(zhàn) 課件 第10章字符串和常用類庫(kù)_第2頁(yè)
Java編程技術(shù)與項(xiàng)目實(shí)戰(zhàn) 課件 第10章字符串和常用類庫(kù)_第3頁(yè)
Java編程技術(shù)與項(xiàng)目實(shí)戰(zhàn) 課件 第10章字符串和常用類庫(kù)_第4頁(yè)
Java編程技術(shù)與項(xiàng)目實(shí)戰(zhàn) 課件 第10章字符串和常用類庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章字符串和常用類庫(kù)01開(kāi)篇引導(dǎo)小林在學(xué)習(xí)完Java基礎(chǔ)語(yǔ)法和面向?qū)ο笏枷牒?,他想?shí)戰(zhàn)一個(gè)“用戶注冊(cè)”功能。在這個(gè)功能中,接收用戶名信息、手機(jī)號(hào)信息及密碼信息,這些信息以什么類型進(jìn)行存儲(chǔ)更為合適呢?對(duì)于手機(jī)號(hào)信息、密碼長(zhǎng)度,期望對(duì)其提供校驗(yàn),以確保用戶輸入的是一個(gè)正確的手機(jī)號(hào)格式、密碼長(zhǎng)度不要太短,如何對(duì)信息進(jìn)行匹配校驗(yàn)?zāi)??在注?cè)表單中,期望程序能夠生成一串隨機(jī)數(shù),作為驗(yàn)證碼,Java是否提供了類似功能的API?注冊(cè)完后,期望賬號(hào)有效期為固定的一段時(shí)間,在Java中如何表示日期類型,以及對(duì)日期進(jìn)行計(jì)算呢?本章內(nèi)容將學(xué)習(xí)字符串類型及字符串相關(guān)操作,正則表達(dá)式的語(yǔ)法及使用、及Java一些常用的工具類。01開(kāi)篇引導(dǎo)知識(shí)要點(diǎn)掌握程度相關(guān)知識(shí)字符串定義和通用操作掌握創(chuàng)建字符串字符串通用操作StringAPIStringBuilder和StringBuffer重點(diǎn)掌握StringBuilder和StringBuffer概述常用方法tringBuilder和StringBuffer區(qū)別正則表達(dá)式重點(diǎn)掌握正則表達(dá)式概述正則表達(dá)式語(yǔ)法正則表達(dá)式的使用4.靜態(tài)方法Java常用類庫(kù)掌握Object類Math類Random類4.日期類01開(kāi)篇引導(dǎo)技能要點(diǎn)掌握程度應(yīng)用方向字符串API的使用掌握應(yīng)用開(kāi)發(fā)移動(dòng)端開(kāi)發(fā)StringBuilder和StringBuffer區(qū)別重點(diǎn)掌握應(yīng)用開(kāi)發(fā)Web開(kāi)發(fā)服務(wù)器開(kāi)發(fā)正則表達(dá)式定義重點(diǎn)掌握表單校驗(yàn)文本查找內(nèi)容替換Java常用類庫(kù)的使用掌握應(yīng)用開(kāi)發(fā)Web開(kāi)發(fā)3.桌面開(kāi)發(fā)4.大數(shù)據(jù)開(kāi)發(fā)5.游戲開(kāi)發(fā)字符串定義和通用操作02在Java編程中,字符串(String)是一種非常常見(jiàn)的數(shù)據(jù)類型,主要用于存儲(chǔ)文本信息。還有一個(gè)字面相似的概念叫字節(jié)(byte)。字節(jié)是存儲(chǔ)容量的基本單位,一個(gè)字節(jié)等于8個(gè)二進(jìn)制單位。字符是數(shù)字、字?、漢字以及其他語(yǔ)?的各種符號(hào),一個(gè)字符由一個(gè)或多個(gè)字節(jié)組成,字符串由一個(gè)或多個(gè)字符組成。無(wú)論是處理用戶輸入輸出,還是與外部信息通信,字符串都起著重要作用。本章節(jié)將深入探討Java中的字符串:什么是字符串,如何創(chuàng)建和操作字符串,以及一些通用的字符串操作方法。異常的概念-異常體系結(jié)構(gòu)02Java語(yǔ)言有著強(qiáng)大的異常處理機(jī)制,能夠?qū)⒋a控制權(quán)從出錯(cuò)點(diǎn)轉(zhuǎn)移到最近的異常處理器。異常機(jī)制能夠幫助我們找到程序中的問(wèn)題,Java中異常的基類是java.lang.Throwable,其下有兩個(gè)異常分支:java.lang.Error和java.lang.Exception,平常代碼中拋出的異常通常指java.lang.Exception。異常的概念-異常體系結(jié)構(gòu)02Throwable體系說(shuō)明:

Error:在正常環(huán)境中不希望被程序捕獲的異常。Java運(yùn)行中使用Error類型異常來(lái)顯示與運(yùn)行時(shí)系統(tǒng)本身相關(guān)的錯(cuò)誤。堆棧溢出就是這種錯(cuò)誤的一個(gè)例子。

Exception:用于表示代碼程序可能出現(xiàn)的異常情況,它也是用來(lái)創(chuàng)建自定義異常類型類的父類表示異常。異常產(chǎn)生后程序員可以通過(guò)代碼的方式糾正,使程序繼續(xù)運(yùn)行,是應(yīng)該且必須要處理掉的。對(duì)于Exception而言,又可細(xì)分為運(yùn)行時(shí)異常(RuntimeException)和非運(yùn)行時(shí)異常,也稱為未檢查異常(UncheckedException)和檢查異常(CheckedException)。異常的概念-異常體系結(jié)構(gòu)02運(yùn)行時(shí)異常都是RuntimeException類及其子類異常,這些異常是未檢查異常,在程序中,您可以選擇捕獲和處理,也可以選擇不理會(huì)。這些異常通常是由程序中的邏輯錯(cuò)誤引起的,程序應(yīng)從邏輯的角度盡可能避免此類異常。非運(yùn)行時(shí)異常是RuntimeException以外的異常,也稱為檢查異常。它們都屬于Exception類及其子類。對(duì)于這種異常,Java編譯器強(qiáng)制要求我們必需對(duì)出現(xiàn)的這些異常進(jìn)行捕獲處理,否則程序無(wú)法通過(guò)編譯(受Java編譯器檢查)。異常的概念-常用的異常類02Java預(yù)定義了很多異常類,位于java.lang包中,用于程序中不同異常的聲明或拋出,你應(yīng)該根據(jù)異常類型去合理處理或拋出合適的異常。如圖3所示,通過(guò)API或編譯工具如IntelliJIDEA,對(duì)Exception類查看其子類,默認(rèn)快捷鍵為Ctrl+H。Java預(yù)定義了很多異常類,位于java.lang包中,用于程序中不同異常的聲明或拋出,你應(yīng)該根據(jù)異常類型去合理處理或拋出合適的異常,整理了一些常用的異常類及其說(shuō)明,如下表所示異常類說(shuō)明Exception異常層次結(jié)構(gòu)的根類RuntimeException運(yùn)行時(shí)異常,多數(shù)java.lang異常的根類ArithmeticException算術(shù)異常,如以零做除數(shù)ArraylndexOutOfBoundException數(shù)組大小小于或大于實(shí)際的數(shù)組大小NullPointerException嘗試訪問(wèn)null對(duì)象成員,空指針異常ClassNotFoundException不能加載所需的類NumberFormatException數(shù)字轉(zhuǎn)化格式異常,比如字符串到float型數(shù)字的轉(zhuǎn)換無(wú)效異常的概念-常用的異常類02異常類說(shuō)明IOExceptionI/O異常的根類FileNotFoundException找不到文件EOFException文件結(jié)束InterruptedException線程中斷IllegalArgumentException方法接收到非法參數(shù)ClassCastException類型轉(zhuǎn)換異常SQLException操作數(shù)據(jù)庫(kù)異常異常處理-異常處理捕獲03對(duì)于可能會(huì)拋出異常的代碼塊,可以使用try-with-resource方式進(jìn)行處理,涉及的關(guān)鍵字為try、catch、finally。語(yǔ)法塊分為trycatch及trycatchfinally。(1)try-catch:捕獲異常語(yǔ)法結(jié)構(gòu)如下:try{

將可能發(fā)生異常的代碼放入try代碼塊中}catch(異常類型){

處理異常的手段,如:記錄日志/打印異常信息/繼續(xù)拋出異常}catch(異常類型){

處理異常的手段,如:記錄日志/打印異常信息/繼續(xù)拋出異常}....異常處理-異常處理捕獲03【例9-1】讀取文件以獲取一個(gè)文件輸入流,在傳入文件路徑時(shí),可能參數(shù)為空;即使文件路徑不為空,也不排除這個(gè)文件路徑是無(wú)效的,所以,代碼應(yīng)該考慮這些問(wèn)題并捕獲這些問(wèn)題,代碼如下:importjava.io.FileInputStream;importjava.io.FileNotFoundException;publicstaticvoidreadFile(StringfilePath){try{FileInputStreamfis=newFileInputStream(filePath);}catch(NullPointerExceptione){System.out.println("文件名不能為空");}catch(FileNotFoundExceptione){System.out.println("文件路徑異常");}}在上述代碼中,try-catch,這種異常處理方式,要求多個(gè)catch中的異常不能相同,并且若catch中的多個(gè)異常之間有子父類異常的關(guān)系,那么子類異常要求在上面的catch處理,父類異常在下面的catch處理。不然話會(huì)出現(xiàn)編譯錯(cuò)誤。異常處理-異常處理捕獲03小貼士:若知道代碼可能會(huì)拋出異常,但這個(gè)異常程序員并不清楚會(huì)報(bào)哪個(gè)具體異常,或者不希望過(guò)細(xì)地處理異常時(shí),或可能的異常情況較多時(shí),可以統(tǒng)一捕獲Exception異常,即只要代碼可能有異常,都對(duì)其進(jìn)行捕獲。publicstaticvoidreadFile2(StringfilePath){try{FileInputStreamfis=newFileInputStream(filePath);}catch(Exceptione){System.out.println("程序錯(cuò)誤");}}在上述代碼中,個(gè)異常一次捕獲,多次處理。這種操作精度更細(xì),能夠更好定位異常問(wèn)題;多個(gè)異常一次捕獲一次處理。異常處理-異常處理捕獲03(2)try-catch-finally:不論異常是否出現(xiàn)或者被捕獲,都希望執(zhí)行某些操作,這些代碼應(yīng)該放在finally代碼塊中。語(yǔ)法結(jié)構(gòu)如下: try{ //dosomething}catch(ExceptionClasse){ //handle}finally{ //handle }異常處理-異常處理捕獲03【例9-2】在9-1案例中在使用完畢對(duì)象之后,期望將流進(jìn)行關(guān)閉,并且關(guān)閉流這個(gè)操作不管代碼是否出錯(cuò),應(yīng)當(dāng)必須執(zhí)行,否則它將一直占用內(nèi)存資源,此時(shí),就應(yīng)該把這些必要操作放在finally代碼塊中,代碼如下:publicstaticvoidreadFile3(StringfilePath){FileInputStreamfis=null;try{fis=newFileInputStream(filePath);}catch(Exceptione){System.out.println("程序錯(cuò)誤");}finally{try{fis.close();}catch(IOExceptione){e.printStackTrace();}}}在上述代碼中,你應(yīng)該避免在finally子句中拋出異常,如果不能避免,那就在finally中再次使用try-catch。要注意的是,如果try代碼塊拋出異常,則該異常會(huì)被finally中的異常覆蓋異常處理-異常拋出03在方法聲明處使用throws關(guān)鍵字,表明該方法可能拋出的異常。這樣調(diào)用該方法的代碼就需要處理這些異常.語(yǔ)法結(jié)構(gòu)如下:publicvoidmethodTest()throws異常類型1,異常類型2{//方法體}【例9-3】在9-1案例中使用try-catch進(jìn)行捕獲實(shí)現(xiàn),在9-2中使用throws進(jìn)行拋出異常實(shí)現(xiàn),代碼如下:importjava.io.FileInputStream;importjava.io.FileNotFoundException;publicclassThrowableDemo01{publicstaticvoidreadFile(StringfilePath)throwsNullPointerException,FileNotFoundException{FileInputStreamfis=newFileInputStream(filePath);}}在上述代碼中,但是這個(gè)異常無(wú)法處理或不希望由自身方法直接處理,而是希望這些異常交由方法調(diào)用者處理時(shí),需要在方法上使用throws聲明。自定義異常-自定義異常的概述04JavaAPI提供了許多異常類,如果這些異常在你的編程場(chǎng)景中剛好適合,你就應(yīng)該使用它們。除非沒(méi)有一個(gè)標(biāo)準(zhǔn)的異常類能夠滿足你的需求,你才需要自定義異常類。自定義異常的概述:可以根據(jù)需要自定義異常類。自定義異常類通常繼承自Exception或其子類。對(duì)于自定義異常類來(lái)說(shuō),最重要的部分就是它的類名,異常類名應(yīng)做到見(jiàn)名知意。自定義異常-自定義異常的實(shí)現(xiàn)04建議為異常類定義兩個(gè)構(gòu)造方法,一個(gè)無(wú)參構(gòu)造,一個(gè)字符串參數(shù)構(gòu)造,用于描述異常信息。【例9-4】當(dāng)一個(gè)方法拋出異常時(shí),建議使用javadoc的@throws標(biāo)簽來(lái)文檔化。以下是一個(gè)自定義的注冊(cè)異常類,代碼如下:publicclassRegisterExceptionextendsException{/***無(wú)參構(gòu)造*/publicRegisterException(){}/***有參構(gòu)造*@parammessage異常提示信息

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論