1. 程式人生 > >(1)Map集合 (2)異常機制 (3)File類 (4)I/O流

(1)Map集合 (2)異常機制 (3)File類 (4)I/O流

目錄 all exc 修改 運行時異常 運行時 val 獲取絕對路徑 重寫

1.Map集合(重點)
1.1 常用的方法
Set<Map.Entry<K,V>> entrySet() - 用於將Map集合轉換為Set集合。
其中Map.Entry<K,V>是來自java.util包中的接口,常用方法如下:
K getKey() - 用於獲取當前接口類型引用中的key值並返回。
V getValue() - 用於獲取當前接口類型引用中的value值並返回。
Set<K> keySet() - 用於將Map集合中所有的鍵放入Set集合中並返回。

2.異常機制(重點、簡單)
2.1 基本概念
java.lang.Throwable類是Java語言中所有錯誤(Error)或異常(Exception)的超類。
其中錯誤主要指在運行階段出現的嚴重問題,通常無法通過編程解決,如:JVM掛掉。
其中異常主要指在運行階段出現的不太嚴重的問題,通常可以編程解決,如:零做除數。

2.2 異常的分類
java.lang.Exception類是Java語言中所有異常的超類,具體分類如下:
RuntimeException類 - 運行時異常,也叫作非檢測性異常
IOException和其它異常類 - 其它異常,也叫作檢測性異常
- 所謂檢測性異常就是指在編譯階段可以被編譯器檢查出來並報錯的異常。
RuntimeException類的主要子類:
ArithmeticException - 算術異常
ArrayIndexOutOfBoundsException - 數組下標越界異常
NullPointerException - 空指針異常
ClassCastException - 類型轉換異常
NumberFormatException - 數字格式異常

註意:
當程序執行過程中發生異常又沒有手動處理時,則Java虛擬機采用默認方式處理,而默認處理方式就是:打印異常名稱、異常原因、異常發生的位置,最後終止程序的執行。

2.3 異常的避免
對於絕大多數異常來說,都可以使用if()條件判斷避免異常的發生。

2.4 異常的捕獲
(1)語法格式
try{
編寫所有可能發生異常的語句;
}
catch(異常類型 引用變量名){
編寫針對該類型異常的處理語句;
}
... ...
finally{
編寫無論是否發生異常都應該執行的語句;
}

(2)註意事項
當try{}中可能發生多種異常時,則應該編寫多個catch分支,切記小類型放在大類型上面。
懶人的寫法:
catch(Exception e){
e.printStackTrace(); //用於打印異常名稱、原因、發生位置等信息。
}
finally{}中通常用於編寫進行善後處理的語句,比如:關閉已經打開的文件等。

(3)執行流程
try{
a;
b; - 可能發生異常的語句;
c;
}
catch{
d;
}
finally{
e;
}

當程序沒有發生異常時的執行流程:a b c e
當程序中發生異常時的執行流程: a b d e

2.5 異常的拋出
(1)基本概念
當程序中出現的異常無法處理或不便於處理時,則應該將該異常轉移給該模塊的調用者,這種方式叫異常的拋出。

(2)語法格式
訪問控制符 返回值類型 方法名(形參列表) throws 異常類型1,異常類型2,...{}
如:
public void show() throws IOException {}

(3)方法重寫的主要原則
a.要求方法名、參數列表和返回值類型相同,從jdk1.5開始允許返回子類。
b.訪問權限不能變小,可以相等或者變大。
c.不能拋出更大的異常。

註意:
子類中重寫的方法可以拋出和父類一樣的異常、更小的異常以及不拋出異常,但不能拋出更大的異常、同級不一樣的異常。

2.6 自定義異常
(1)自定義異常的由來
當程序中需要表達年齡不合理的異常時,Java官方並沒有提供針對該業務的異常類型,此時若希望專門使用一個表達年齡不合理的異常,則需要程序員自定義異常類。

(2)基本流程
a.自定義xxxException類繼承Exception類或者其子類;
b.在該類中提供兩個版本的構造方法,一個是無參的構造方法,另外一個是字符串
做參數的構造方法。

(3)異常對象的拋出
throw new 異常類型();
如:
throw new AgeException();

3.File類(重點)
3.1 基本概念
java.io.File類用於描述文件和目錄的相關信息,可以獲取大小、最後一次修改時間等信息

3.2 常用的方法
File(String pathname) - 根據參數指定的路徑信息來構造對象。
boolean exists() - 用於判斷調用對象所表示的文件或目錄是否存在。
String getName() - 用於獲取文件或目錄的名稱。
long length() - 用於獲取文件的長度/大小。
long lastModified() - 用於獲取最後一次修改時間。
String getAbsolutePath() - 用於獲取絕對路徑信息並返回。
絕對路徑 - 主要指以根目錄開始的路徑信息,如:c:/... d:/... /
相對路徑 - 主要指以當前工作目錄開始的路徑信息,如:./code
- 以後的開發中推薦使用相對路徑信息。
boolean delete() - 用於刪除文件/目錄。
boolean createNewFile() - 用於創建新的空文件。

boolean mkdir() - 用於創建單層目錄。
boolean mkdirs() - 用於創建多級目錄。

File[] listFiles() - 用於獲取當前目錄中的所有內容並返回。
boolean isFile() - 用於判斷調用對象是否為一個普通文件。
boolean isDirectory() - 用於判斷調用對象是否為一個目錄。

(1)Map集合 (2)異常機制 (3)File類 (4)I/O流