常用的类、文件操作
?
異常與異常處理
?
異常簡介
在Java中,所有的異常都有一個共同的祖先Throwable(可拋出)。Throwable指定代碼中可用異常傳播機制通過Java應用程序傳輸任何問題的共性。
處理異常機制在 Java 應用程序中,異常處理機制為:拋出異常,捕捉異常。
try {
// 可能會發生異常的程序代碼
} catch (Type1 id1){
// 捕獲并處置try拋出的異常類型Type1
}
catch (Type2 id2){
//捕獲并處置try拋出的異常類型Type2
}
關鍵詞try后的一對大括號將一塊可能發生異常的代碼包起來,稱為監控區域。Java方法在運行過程中出現異常,則創建異常對象。將異常跑出監控區域之外,由Java運行時系統試圖尋找匹配的catch字句以捕獲異常。若有匹配的catch字句,則運行其異常處理代碼,try-catch語句結束。
匹配的原則是:如果拋出的異常對象屬于catch字句的異常類,或者屬于該異常的子類,則認為生成的異常對象與catch塊不活的異常類型相匹配。
小結try 塊:用于捕獲異常。其后可接零個或多個catch塊,如果沒有catch塊,則必須跟一個finally塊。
catch 塊:用于處理try捕獲到的異常。
finally 塊:無論是否捕獲或處理異常,finally塊里的語句都會被執行。當在try塊或catch塊中遇到return語句時,finally語句塊將在方法返回之前被執行。在以下4種特殊情況下,finally塊不會被執行:
a)在finally語句塊中發生了異常。
b)在前面的代碼中用了System.exit()退出程序。
c)程序所在的線程死亡。
d)關閉CPU。
throws拋出異常如果一個方法可能會出現異常,但沒有能力處理這種異常,可以再方法聲明處用throws字句來聲明拋出異常。
throws語句用在方法定義時聲明該方法要拋出的異常類型,如果拋出的是Exception異常類型,則該方法被聲明為拋出所有的異常。多個異常可使用逗號分割。
throws語句的語法格式為:
methodname throws Exception1,Exception2,..,ExceptionN
{
????throw new Exception("異常說明");
}
方法名后的throws Exception1,Exception2,...,ExceptionN 為聲明要拋出的異常列表。當方法拋出異常列表的異常時,方法將不對這些類型及其子類類型的異常作處理,而拋向調用該方法的方法,由他去處理。
自定義異常使用Java內置的異常類可以描述在編程時出現的大部分異常情況。除此之外,用戶還可以自定義異常。用戶自定義異常類,只需繼承Exception類即可。
在程序中使用自定義異常類,大體可分為以下幾個步驟。
(1)創建自定義異常類。
(2)在方法中通過throw關鍵字拋出異常對象。
(3)如果在當前拋出異常的方法中處理異常,可以使用try-catch語句捕獲并處理;否則在方法的聲明處通過throws關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操作。
(4)在出現異常方法的調用者中捕獲并處理異常。
Java中的異常鏈在try-catch做具體處理的時候,在catch部分不做具體處理而僅僅是用throw這個關鍵字將異常主動拋出來。然后在通過關鍵字throws
繼續拋出該方法異常。常常會再捕獲一個異常后跑出另外一個異常,并且希望把異常原始信息保存下來,這被稱為異常鏈。
Java中的字符串在Java中,字符串被作為String類型的對象處理。String類位于java.lang包中。默認情況下,該包被自動導入所有的程序。
1、Java字符串的不變性。String對象創建后則不能被修改,是不可變的,所謂的修改其實是創建了新的對象,所指向的內存空間不同。(每次new一個字符串就是產生一個新的對象,即便兩個字符串的內容相同。使用"=="比較為false,如果只比較內容是否相同,應使用"equals"方法)。如果是多次出現的字符常量,Java編譯程序只創建一個。
Java中String類常用的方法使用indexOf()進行字符或字符串查找時,如果匹配返回位置索引,否則返回-1;
使用substring(beginInsex, endIndex)進行字符串截取時,包括beginIndex位置的字符,不包括endIndex位置的字符。
"=="和equals()方法的區別:"=="判斷兩個字符在內存中的首地址是否相同,及判斷是否為同一個字符串對象,equals()方法比較尊處在兩個字符串對象中的內容是否一致。
Java中的StringBuilder類在Java中,除了可以使用String類來存儲字符串,還可以使用StringBuilder類存儲字符串。當頻繁操作字符串時,就會額外產生很多臨時變量。使用StringBuilder或者StringBuffer就可以避免這個問題。
StringBuilder和StringBuffer區別:StringBuffer是線程安全的,而StringBuilder則沒有實現線程安全的功能,所以性能略高。
StringBuilder類的常用方法:
Java中的包裝類Java語言是一種面向對象的語言,但是Java中的基本數據類型不是面向對象的。Java為每個基本數據類型都提供了一個包裝類,這樣就可以像操作對象那樣來操作基本數據類型。
基本類型和包裝類之間的對應關系:
包裝類主要提供了兩大類方法:
將字符串赫本類型及包裝類互相轉換的方法。
Inter包裝類的特性:
構造方法:
常用方法:
Java基本類型和包裝類之間的轉換
基本類型和包裝類型之間經常需要互相轉換。在JDK1.5引入自動裝箱和拆箱機制后,包裝類和基本類型之間的轉換更加輕松便利了。
裝箱:把基本類型轉換為包裝類,使其具有對象的性質,又可分為手動裝箱和自動裝箱。
拆箱:把包裝類對象轉換成基本類型的值,又分為手動拆箱和自動拆箱。
Java中基本類型和字符串之間的轉換基本類型轉換為字符串有三種方法:
使用String類的valueOf()方法;
用一個空字符串加上基本類型,得到的就是基本類型數據對應的字符串。
將字符串轉換為基本類型:
在java.util包中的Date類最主要的作用就是獲取當前時間(使用Date類的默認無參構造方法創建的對象就代表當前時間)。
在java.text包中的SimpleDateFormat類來對日期進行格式化。
使用parse()方法將文本轉換為日期。
注意:
Date類的最主要作用就是獲得當前的時間,,Calendar類進行時間和日期的處理。Java.util.Calendar類是一個抽象類,可以通過getInstance()靜態方法獲取一個Calendar對象,此對象已由當前日期時間初始化,即默認代表當前時間,如Calendar c = Calendar.getInstance();調用Calendar類的getInstance()方法獲取一個實例,然后通過調用get()方法獲取日期時間信息,參數為需要或得的字段的值,Calendar.Year等為Calendar類定義的靜態常量。
Calendar類提供了getTime()方法,用來獲取Date對象,完成Calendar和Date的轉換,還可以通過getTimeMillis()方法獲取此Calendar的時間值,以毫秒為單位。
使用Math類操作數據Math類位于java.lang包中,包含用于執行基本數學運算的方法,Math類的所有方法都是靜態方法,所以使用該類中的方法時,可以直接使用類名.方法名,如Math.round();常用的方法:
Java中的集合框架
?
集合的作用在類的內部,對數據進行組織;
簡單而快速的搜索大數量的條目;
有的集合接口,提供了一系列排列有序的元素,并且可以在序列中間快速的插入或者刪除有關元素;
有的集合接口提供了映射關系,可以通過關鍵字(key)去快速查找對應的唯一對象,而這個關鍵字可以是任意類型查找所映射的具體對象。
集合與數組的對比數組的長度固定,集合的長度可變;
數組只能通過下表訪問元素,類型固定,而有的集合可以通過任意。
Java集合框架Java集合架構支持三種類型的集合:規則集(Set),現行表(List),和圖(Map),分別定義在Set,List,Map中。Set實例存儲一組互不相同的元素(集合),List實例存儲一組順序排列的元素(表),Map存儲醫囑對象-關鍵值的映射。
Collection接口:
????Set接口:
????????HashSet具體類
????????LinkedHashSet具體類
TreeSet具體類
????List接口:
????????ArrayList具體類
????????LinkedList具體類
????????向量類Vector具體類
????????Stack具體類
????Map接口:
????????HashMap類
????????LinkedHashMap類
????????TreeMap類
具體框架如下圖所示:
List接口及其實現類—ArrayListList是元素有序并且可以重復的集合,被稱為序列
List可以精確地控制每個元素的插入位置,或刪除某個位置的元素
ArrayList—數組序列,是List的一個重要實現類
ArrayList底層是數組實現的。
轉載于:https://www.cnblogs.com/willhunting/p/5053278.html
總結
- 上一篇: GetLastError()返回值及含义
- 下一篇: 20060427: 部分汉化Togeth