java異常處理和集合框架

一、java異常處理

1、java所有類均繼承自Object類,java。lang包中的異常類Throwable類亦如此。其派生出兩個子類:Error類和Exception類。其中Error類主要處理執行環境的異常,而Exception類則是可以被丟擲的異常型別,接下來主要討論這個類。Exception分為RunTimeExcepiton和其他Exception。RunTimeExcepiton稱為執行時異常,例如空指標異常、算術異常等。

2、java透過try-catch或try-catch-finally處理異常。並且可以同時捕獲多種不同型別的異常。捕獲異常時,可以透過printStackTrace()列印異常的錯誤資訊。finally表示在處理異常後要做的動作,例如關閉某某連線等。

try{ //一些會丟擲異常的方法}catch(Exception1 e){ //子類異常在前面處理}catch(Exception2 e){ //子類異常在前面處理}catch(Exception e){ //e。printStackTrace(); //Exception為父類異常,應在最後處理}finally{ //最終要執行的程式碼}

二、java的字串

3、String類是引用型別,java每一個字串都是一個物件。String類物件建立後不能被修改,所謂的修改其實是建立了新的物件,所指向的記憶體空間不同。

String s1 = “字串測試”;s1 = “java” + s1;

上面的程式碼先是聲明瞭一個字串物件s1,s1存放了到字串物件的引用,然後第二行程式碼改變了s1,其實質是建立了新的字串物件,變了s1指向了新建立的字串物件。

4、“==”比較的是兩個物件的記憶體地址,如果只是想比較兩個字串物件的內容是否相同,可以使用equals()方法。

5、但如果需要一個可以改變的字串物件,可以用StringBuilder類建立。該類提供了多個方法用於操作字串。例如append()用於追加內容到當前物件的末尾,insert()用於將內容插入到當前物件的指定位置,length()用於獲取字串的長度,toString()用於將當前物件轉換為String物件,等等。

三、java的常用類

6、基本資料型別不具備物件的特性,無法呼叫方法。為了讓基本資料型別也具備物件的特性,java為每個基本資料型別都提供了一個包裝類,這樣就能像操作物件那樣來操作基本資料型別。每個包裝類都提供了本類和其他基本資料型別進行轉換的方法,例如Integer類,提供了floatValue()、intValue()、toString()等方法,用於將Integer型別轉為對應的基本資料型別。

基本資料型別

對應的包裝類

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

7、java。util。Calendar類是一個抽象類,可以透過呼叫getInstance()靜態方法獲取一個Calendar物件,此物件用於獲取當前日期和時間。

Calendar c = Calendar。getInstance();int year = c。get(Calendar。YEAR); //年int month = c。get(Calendar。MONTH) + 1; //月,0表示1月份int day = c。get(Calendar。DAY_OF_MONTH); //日int hour = c。get(Calendar。HOUR_OF_DAY); //小時int min = c。get(Calendar。MINUTE); //分鐘int sec = c。get(Calendar。SECOND); //秒

8、Math類位於java。lang包中,包含用於執行基本數學運算的方法,Math類的所有方法都是靜態方法,可以直接用類名訪問,例如Math。round()。除了round()用於四捨五入後取整,還有,floor()返回小於引數的最大整數,ceil()返回大於引數的最小整數,random()返回[0,1)之間的隨機浮點數。

四、Collection集合介面

9、Collection集合介面繼承自Iterable介面,Iterable介面有一個Iterator介面型的方法iterator()。Collection介面的所有集合類都實現了該方法,在該方法裡實現了Iterator介面的所有方法。Iterator介面是一個迭代器,是所有java集合的頂層介面,其有三個介面方法:

boolean hasNext():判斷容器內是否還有可供訪問的元素;

Object next():返回迭代器剛越過的元素的引用,返回值是Object;

void remove():刪除迭代器剛越過的元素。

//Collection介面的集合類ArrayList//用<>表示泛型,限制該序列只能存放規定的型別及其子型別的物件//String是引用型別,java中每個字串都是一個物件。List listTest = new ArrayList(); listTest。add(“Jack”); //新增第一個元素listTest。add(“Tom”); //新增第二個元素listTest。add(“Bob”); //新增第三個元素Iterator it = listTest。iterator(); //構造listTest物件的迭代器//透過迭代器遍歷元素while(it。hasNext()){ String obj = it。next(); System。out。println(obj);}

10、Collection 介面主要派生出List、Set、Queue等幾個常用集合介面:

List稱為序列,是有序可以重複的集合;

Set稱為集,是無序不可重複的集合;

Queue稱為佇列,是有序可以重複的集合。

11、List介面有兩個比較常用的實現,ArrayList類和LinkedList類:

ArrayList稱為陣列序列,底層資料結構是陣列,查詢快,增刪改慢;

LinkedList稱為連結串列,底層資料結構是連結串列,查詢慢,增刪改快。

12、ArrayList類有幾個比較常用的增刪改查方法,如get()、set()、add()、addAll()、remove()、removeAll()、size()、contains()、containsAll()等。

String[] s = {“aaa”,“bbb”}; //定義一個數組,用於測試addAll()listTest。add(“cjt”); //在序列最後新增元素“cjt”listTest。add(2, “chenjt”); // 在索引為2的位置,新增“chenjt”listTest。addAll(Arrays。asList(s)); //該方法接收一個Collection類的具體例項listTest。addAll(2, Arrays。asList(s));//將陣列新增到索引為2的位置listTest。remove(0); //刪除第一個索引位置的元素listTest。removeAll(Arrays。asList(s)); //刪除陣列s包含的所有元素listTest。set(0, “ddd”); //修改索引為0位置上的序列元素值listTest。get(0); //獲取listTest序列物件的第一個元素listTest。size(); //獲取序列長度listTest。contains(listTest。get(0)); //是否包含某個物件,返回boolean值

13、可以用for迴圈的方式遍歷List序列的元素。

/*for迴圈*/public void getTest(){ int len = listTest。size(); String temp; for(int i=0; i

14、Set介面有一個實現類是HashSet類。該類有幾個常用的增刪查的方法,如add()、addAll()、remove()、removeAll()、size()等(Set是無序的,所以沒有List中諸如get()、set()方法)。用法和ArrayList類的方法一致。

Set setTest = new HashSet();setTest。add(“hahaha”); // 向setTest物件新增元素System。out。println(setTest);

五、Map介面

15、Map介面提供了一種對映關係,其中的元素是以鍵值對(key-value)的形式儲存的,能夠實現根據key快速查詢value。Map中的鍵值對以Entry型別的物件例項形式存在。key值不可重複,value值可以重複。

16、Map支援泛型,形如:Map

17、Map介面提供了幾個常用的方法,如put()、get()、keySet()、entrySet()、getKey()、getValue()、size()、containsKey()、containsValue()等。

Map stu = new HashMap();//新增一個鍵值對,如果要修改某個已存在鍵的對應value值,也是用這個方法stu。put(“01”,“chenjt”);stu。put(“02”,“zhangxh”);stu。put(“03”,“cjt”);stu。put(“04”,“hah”);stu。remove(“04”); //成功刪除key為04的鍵值對stu。size(); //獲取stu物件的長度Object str1 = stu。get(“02”); //獲取key為02的值System。out。println(“key為02的value值為:” + str1);//判斷某個key是否已存在System。out。println(“該key是否已存在:” + stu。containsKey(“03”));//判斷某個value是否已存在System。out。println(“該value是否已存在:” + stu。containsValue(“zhangxh”));Set stuKey = stu。keySet(); //獲取所有的鍵String stuName;for(String stuId : stuKey){ stuName = stu。get(stuId); System。out。println(“key值:” + stuId); System。out。println(“value值:” + stuName);}Set> entrySet = stu。entrySet(); //取得所有鍵值對for(Map。Entry entry : entrySet){ System。out。println(“取得鍵:” + entry。getKey()); //取值 System。out。println(“取得值:” + entry。getValue());//取值}

六、Collections工具類

18、Collections。sort()用於對List進行排序。

七、Comparable和Comparator介面

19、Comparable介面定義了預設的比較規則,可以進行自然排序。其實現類必須實現compareTo()方法,該方法返回正數表示大,負數表示小,0表示相等。

20、Comparator介面用於定義臨時的比較規則,其實現類需要實現compare()方法。

私信回覆學習免費領取最新學習資料

java異常處理和集合框架