day01面向?qū)ο箅A段一繼承java進(jìn)階第5天異常object類_第1頁
day01面向?qū)ο箅A段一繼承java進(jìn)階第5天異常object類_第2頁
day01面向?qū)ο箅A段一繼承java進(jìn)階第5天異常object類_第3頁
day01面向?qū)ο箅A段一繼承java進(jìn)階第5天異常object類_第4頁
day01面向?qū)ο箅A段一繼承java進(jìn)階第5天異常object類_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

5ObjectequalsObjecttoStringAPIObject這個(gè)類。ObjectAnimal類時(shí),我們發(fā)現(xiàn)我們并沒有寫成員方法,但是能調(diào)用,這是因?yàn)樗^承Object類.ObjectJava語言中的根類,即所有類的父類。它中描述的所有方法子類都可以使Object。ObjectequalstoString方法,其他方法后面課程equals較。Object類中的equals方法的就是==比較運(yùn)算符。String對象,equals方法比較一下,你看看會(huì)有什么結(jié)論?為什么?Stringequals方法,改成比較內(nèi)容了equals方法根據(jù)對象的屬性值進(jìn)行比較。如下代碼演 由于要根據(jù)指定類的屬性進(jìn)行比較,這時(shí)只要覆蓋Objectequals方法extendsintage//復(fù)寫父類的equalspublicpublicbooleanequals(Objectobj)//判斷當(dāng)前調(diào)用equalsif(this==obj){return}if(!(objreturn}//將obj向 為 p=returnthis.age==}}注意Objectequalspublicbooleanequals(ObjecttoStringtoString方法返回該對象的字符串表示,其實(shí)該字符串內(nèi)容就是對象的類型+@+內(nèi)存toStringtoString方法返回的結(jié)果是內(nèi)存地址,而在開發(fā)中,經(jīng)常需要按照對象的屬性得extendsintage 類的屬性重寫toString方publicStringtoString()return[age="+age+}}Java等面向?qū)ο蟮木幊陶Z言中,異常本身是一個(gè)類,產(chǎn)生異常就是創(chuàng)建異常對象并拋出了一個(gè)異常對象。Java處理異常的方式是中斷處理。其下有兩個(gè)子類:ErrorExceptionException。捕獲處理,將異常獲取,使用try/catch }方法上加throws 先運(yùn)行下面的程序,程序會(huì)產(chǎn)生一個(gè)數(shù)組索引越界異常ArrayIndexOfBoundception。classclasspublicstaticintge ement(int[]arr,intindex){intelement=arr[index];return}}classclasspublicstaticvoidmain(String[]args)int[]int[]arr=intnum=ArrayTools.ge }}2.4.1JVM拋出異常比如代碼:geementmainpublicstaticvoidmain(String[]args)//int[]arr=intelement=geement(arr);}//publicstaticintgeement(int[]intnumarr[4];//這里可能出錯(cuò),//return}throwthrow異常對象;throwthrownew異常類名(參數(shù)throwthrownewNullPointerException(" 的arr數(shù)組不存在thrownew classclasspublicstaticint ement(int[]arr,intindex)throw拋出異常對象后,方法已經(jīng)無法繼續(xù)運(yùn)算。這thrownewNullPointerException("arr指向的數(shù)組不存在}if(index<0||thrownew }intelement=arr[index];returnelement;}}classclassExceptionDemo3publicstaticvoidmain(Stringargsint[]arr={34,12,67};//創(chuàng)建數(shù)組intnum= ement(null,2//intnum );//}}下面是異常類ArrayIndexOutOfBoundception與NullPointerException的構(gòu)2.4.2異常行,讓調(diào)用者去處理。 修飾符返回值類型方法名(參數(shù))throws異常類名1,異常類名2…{ *如果定義功能時(shí)有問題發(fā)生需要報(bào)告給調(diào)用者。可以通過在方法上使用throws關(guān)鍵字進(jìn) publicclassTestpublicstaticvoidmain(String[]args)throwsFileNotFoundException當(dāng)我們創(chuàng)建字符輸入流對象的時(shí) 也就是調(diào)用FileReader構(gòu)造方法的時(shí)候產(chǎn)生了常當(dāng)這個(gè)構(gòu)造有異常的時(shí)候,必須報(bào)告給調(diào)用者,這時(shí)我們需要在方法上使用throws明FileReaderfr=new}}}throws用于進(jìn)行異常類的,若該方法可能有多種異常情況產(chǎn)生,那么在throws后}}}publicclassTestpublicstaticvoidmain(String[]args)throwsFileNotFoundException,IOExceptionnewFileReader("a.txt")產(chǎn)生了FileNotFoundExceptionFileReaderfr=newfr.read()這個(gè)功能中存在IOExceptionintc=2.4.3trytry}catch(}finallyfinally}publicclasspublicclassTestpublicstaticvoidmain(String[]args)FileReaderfr=null;try{ fr=newFileReader("a.txt");intc=fr.read();catch(IOExceptione括號中需要定義什么呢?try中拋出的是什么異常,在括號中就定 }if(fr!=null){//try//}catch(IOExceptione){}}}}}如果父類方法拋出了多個(gè)異常,子類覆蓋父類方法時(shí),只能拋出相同的異?;蛘呤撬淖蛹痶ry/catchfinally代碼塊,其中的代碼一定會(huì)被執(zhí)行,通常用于資代碼演示voidvoidshow不用throws}catch(Exception}}trycatchvoidvoidshow不用throws}catch(XxxException}catch(YyyException}catch(ZzzException}}常之間有子父類異常的關(guān)系,那么子類異常要求在上面的catch處理,父類異常在下面的catch處理。tryfinallycatch,所以一jvmfinally。只為關(guān)閉資源。voidvoidshow(){//需要throws}finally}}補(bǔ)充練[與大綱無關(guān)ifinallyi值,則最終的返回值仍為ii的值已經(jīng)被修改了補(bǔ)充二*方法中拋出異常,不是RuntimeException* *方法中拋出的異常,都是RuntimeException*拋出的是運(yùn)行時(shí)期異常,無需在方法上寫*publicclassRuntimeExceptionDemopublicstaticvoidmain(String[]args){}publicstaticvoid //thrownew //throw//thrownew}}常,這些異常很可能在JDK中沒有定義過,例如負(fù)數(shù)問題,考試成績負(fù)數(shù)問題.那么能不能java通過類進(jìn)行的描述。并將問題封裝成對象,異常就是將問題JDKJava的這種機(jī)制,我通過閱讀異常源代碼:發(fā)現(xiàn)java中所有的異常類,都是繼承Throwable,或者繼承Throwable的子類。這樣該異常才可以被throw拋出。publicclasspublicclassNullPointerExceptionextendsRuntimeExceptionpublicNullPointerException()}publicNullPointerException(Strings)}}}ClassClassextendsException//或繼承public異常名}public異常名(Strings){}}classclassMyExceptionextends為什么要定義構(gòu)造函數(shù),因?yàn)榭吹絁avapublic}publicMyException(Stringmessage)super(message);//如果自定義異常需要異常信息,可以通過調(diào)用父類的帶有字符串}}classclassMyExceptionextends}MyException(Stringmessage)super(message);//如果自定義異常需要異常信息,可以通過調(diào)用父類的帶有字符串}}定義類,包含name與age兩個(gè)成員變量在類的有參數(shù)構(gòu)造方法中進(jìn)行范圍的判斷若為負(fù)數(shù)或大于150歲則拋出NoAgeException異常,異常提示信息“數(shù)值。classclassNoAgeExceptionextendsException{NoAgeException(){}NoAgeException(Stringmessage){}}類{privateStringname;privateintage;(Stringname,intage)throwsNoAgeExceptionif(age<0||{thrownew }=name;this.age=age;}對象

溫馨提示

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

最新文檔

評論

0/150

提交評論