FOR初學者 IO流,泛型,異常難點總結

IO流:

四個頂層抽象類:

字節流: ? ? ?字節流可以操作任何數據,但是操作純文本時容易出現亂碼

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

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

字符流: ? ? 字符流用于操作純文本數據

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

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

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

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

FileReader fr = new FileReader(file);//普通流構造時里面放的是File類型的對象

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

* 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!");

}

//多異常處理:(一次捕獲,多個catch處理)先檢測try中哪個出現了異常,然后執行對應catch中的語句,由于java是中斷異常處理機制,所以直接執行下面的非異常處理機制的語句

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("這是數學異常");

System.out.println("MDZZ");

e.printStackTrace();

}

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

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

try{

Dateparse= date.parse(s);

System.out.println(1/0);

}catch(ParseException e|ArithmeticException e) {//不可能兩個異常都產生,最多只能產生一個異常,因為產生異常之后中斷處理,就不會再執行try里面的語句了

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

e.printStackTrace();

}

聲明拋出異常

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

String s ="2010-11-28";

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

Dateparse= date.parse(s);

System.out.println(1/0);

}

自定義異常:

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

注意:自定義異常需要手動拋出,使用throw拋出

1.創建異常對象:普通的創建對象

2.拋出異常:使用throw,結束之后表示產生了一個異常

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

publicclassDemo {

publicstaticvoidmain(String[] args)throwsParseException {

Scanner sc =newScanner(System.in);

//自定義異常的練習

inti = sc.nextInt();

if(i<50>){

Over50 o50 =newOver50();

throwo50;//手動拋出異常

}

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

}

classOver50extendsRuntimeException{//定義了over50運行異常類

}

泛型

1.概述:用來靈活地將數據類型應用到不同的類、方法、接口當中。將數據類型作為參數傳遞

2.特點: 泛型的使用只有在創建對象時,數據類型時才能夠確定,在編譯成class文件時會被擦除,在運行時期會被補償

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

使用:創建對象時確定類型

泛型方法:

//簡單的將任意類型的一個t打印出來

publicvoidmethod(T t){

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

}

泛型接口:

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

//定義泛型接口

publicinterfaceMyInterface{

publicabstractvoidmethod(T t);

}

//泛型接口的使用

1.定義類時,實現接口,此時將接口中的數據類型確定下來,這時的類是沒有泛型的,其所有類型都已經確定下來了.

classDemo1implementsMyInterface{

publicvoidmethod(String s) {

}

}

2.定義類時,實現接口,此時接口中的數據類型還沒有確定下來,這時的類也應該要有泛型,其所有類型要等創建對象的時候才能被定下來.

classDemo1implementsMyInterface{

publicvoidmethod(T t) {

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,141評論 0 62
  • 在經過一次沒有準備的面試后,發現自己雖然寫了兩年的android代碼,基礎知識卻忘的差不多了。這是程序員的大忌,沒...
    猿來如癡閱讀 2,872評論 3 10
  • JAVA面試題 1、作用域public,private,protected,以及不寫時的區別答:區別如下:作用域 ...
    JA尐白閱讀 1,182評論 1 0
  • 執教者:胡秋娟 時間:2016.11.22 圖片導入 學生作圖:作點A關于x軸、y軸的對稱點。 小組合作:發現點A...
    王家雄閱讀 596評論 0 0