FOR初學(xué)者 IO流,泛型,異常難點(diǎn)總結(jié)

IO流:

四個(gè)頂層抽象類:

字節(jié)流: ? ? ?字節(jié)流可以操作任何數(shù)據(jù),但是操作純文本時(shí)容易出現(xiàn)亂碼

OutputStream(字節(jié)輸出流)----->FileOutputStream(具體操作類);

InputStream(字節(jié)輸入流)----->FileInputStream(具體操作類);

字符流: ? ? 字符流用于操作純文本數(shù)據(jù)

1. ? ? Reader(字符輸入流)--->InputStreamReader(轉(zhuǎn)換流:把字節(jié)流轉(zhuǎn)化成字符流)--->FileReader(具體操作流)--->BufferedReader(高效流)

2. ? ? ?Writer(字符輸出流)---->OutputStreamWriter(轉(zhuǎn)換流:把字符流轉(zhuǎn)化成字節(jié)流)--->FileWriter(具體操作流)--->BufferedWriter(高效流)

File類-->FileReader/Writer類-->outputStreamWriter/inputStreamReader類||BufferedWriter/BufferedReader類

File file = new File("路徑");//File最常見的構(gòu)造

FileReader fr = new FileReader(file);//普通流構(gòu)造時(shí)里面放的是File類型的對(duì)象

BufferedReader br = new BufferedReader(fr)//高效流構(gòu)造時(shí)里面放的是普通流

* BufferedReader高效字符流特殊方法

* public String readLine()??一次讀一行,如果讀到末尾返回null

* BufferedWriter高效字符流特殊方法

* public void newLine()??換行

異常體系:exception和Error都繼承于祖類throwable,

exception又分為RunTimeException與非RunTimeException

異常的處理方式

父類沒有的異常子類肯定沒有,

捕獲異常: ?try/catch

//單異常處理

try{

System.out.println(1/0);

}catch(ArithmeticException e) {

System.out.println("MDZZ!");

}

//多異常處理:(一次捕獲,多個(gè)catch處理)先檢測(cè)try中哪個(gè)出現(xiàn)了異常,然后執(zhí)行對(duì)應(yīng)catch中的語句,由于java是中斷異常處理機(jī)制,所以直接執(zhí)行下面的非異常處理機(jī)制的語句

try{

Dateparse= date.parse(s);

System.out.println(1/0);

}catch(ParseException e) {

System.out.println("這是parse異常");

e.printStackTrace();

}catch(ArithmeticException e){

System.out.println("這是數(shù)學(xué)異常");

System.out.println("MDZZ");

e.printStackTrace();

}

//控制臺(tái)上輸出的是:這是parse異常...................還有顯示的位置

//上面的代碼也可以修改成另一種形式(不通用)

try{

Dateparse= date.parse(s);

System.out.println(1/0);

}catch(ParseException e|ArithmeticException e) {//不可能兩個(gè)異常都產(chǎn)生,最多只能產(chǎn)生一個(gè)異常,因?yàn)楫a(chǎn)生異常之后中斷處理,就不會(huì)再執(zhí)行try里面的語句了

System.out.println("這是parse異常");

e.printStackTrace();

}

聲明拋出異常

publicvoidmethod()throwsParseException{//方法后面加throws+可能出現(xiàn)的異常,聲明如果出現(xiàn)異常就將異常拋出,誰調(diào)用誰去處理異常,調(diào)用者也可以選擇繼續(xù)拋出,交給JVM來處理! 如果在定義方法是沒有聲明拋出,那么在方法中出現(xiàn)的異常會(huì)直接交給JVM處理!

String s ="2010-11-28";

DateFormat date =newSimpleDateFormat("yyyy-MM!dd");

Dateparse= date.parse(s);

System.out.println(1/0);

}

自定義異常:

定義格式:如果是編譯期異常,則繼承exception,如果是運(yùn)行期異 常則繼承RuntimeException,

注意:自定義異常需要手動(dòng)拋出,使用throw拋出

1.創(chuàng)建異常對(duì)象:普通的創(chuàng)建對(duì)象

2.拋出異常:使用throw,結(jié)束之后表示產(chǎn)生了一個(gè)異常

3.處理異常:使用throws或者try/catch來處理

publicclassDemo {

publicstaticvoidmain(String[] args)throwsParseException {

Scanner sc =newScanner(System.in);

//自定義異常的練習(xí)

inti = sc.nextInt();

if(i<50>){

Over50 o50 =newOver50();

throwo50;//手動(dòng)拋出異常

}

System.out.println("呵呵");

}

classOver50extendsRuntimeException{//定義了over50運(yùn)行異常類

}

泛型

1.概述:用來靈活地將數(shù)據(jù)類型應(yīng)用到不同的類、方法、接口當(dāng)中。將數(shù)據(jù)類型作為參數(shù)傳遞

2.特點(diǎn): 泛型的使用只有在創(chuàng)建對(duì)象時(shí),數(shù)據(jù)類型時(shí)才能夠確定,在編譯成class文件時(shí)會(huì)被擦除,在運(yùn)行時(shí)期會(huì)被補(bǔ)償

泛型類:直接在類名后加<變量,通常為E或者T>

使用:創(chuàng)建對(duì)象時(shí)確定類型

泛型方法:

//簡(jiǎn)單的將任意類型的一個(gè)t打印出來

publicvoidmethod(T t){

System.out.println(t.toString());

}

泛型接口:

定義格式:直接在接口后面加;

//定義泛型接口

publicinterfaceMyInterface{

publicabstractvoidmethod(T t);

}

//泛型接口的使用

1.定義類時(shí),實(shí)現(xiàn)接口,此時(shí)將接口中的數(shù)據(jù)類型確定下來,這時(shí)的類是沒有泛型的,其所有類型都已經(jīng)確定下來了.

classDemo1implementsMyInterface{

publicvoidmethod(String s) {

}

}

2.定義類時(shí),實(shí)現(xiàn)接口,此時(shí)接口中的數(shù)據(jù)類型還沒有確定下來,這時(shí)的類也應(yīng)該要有泛型,其所有類型要等創(chuàng)建對(duì)象的時(shí)候才能被定下來.

classDemo1implementsMyInterface{

publicvoidmethod(T t) {

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評(píng)論 18 399
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,265評(píng)論 0 62
  • 在經(jīng)過一次沒有準(zhǔn)備的面試后,發(fā)現(xiàn)自己雖然寫了兩年的android代碼,基礎(chǔ)知識(shí)卻忘的差不多了。這是程序員的大忌,沒...
    猿來如癡閱讀 3,122評(píng)論 3 10
  • JAVA面試題 1、作用域public,private,protected,以及不寫時(shí)的區(qū)別答:區(qū)別如下:作用域 ...
    JA尐白閱讀 1,269評(píng)論 1 0
  • 執(zhí)教者:胡秋娟 時(shí)間:2016.11.22 圖片導(dǎo)入 學(xué)生作圖:作點(diǎn)A關(guān)于x軸、y軸的對(duì)稱點(diǎn)。 小組合作:發(fā)現(xiàn)點(diǎn)A...
    王家雄閱讀 644評(píng)論 0 0

友情鏈接更多精彩內(nèi)容