1. 程式人生 > >java基礎 第十二章(異常處理、工具類、集合)

java基礎 第十二章(異常處理、工具類、集合)

重寫 trac com int 出現異常 sta 順序存儲 空指針異常 處理

一、異常處理

1.兩種異常:

(1)程序員自身問題(運行時異常)

(2)外界問題(可控異常)

2.兩種異常的詳細說明

(1)運行時異常

當程序發生運行時異常時,程序會中斷程序。

例:p1為對象;

p1 p = new p1();

p = null;

p.sayHello();

//這時就會報空指針異常 NullPointerException();

//以上語句就等同於

throw new NullPointerException();

運行時異常的種類:

throw new NullPointerException(); //空指針異常

throw new ArrayIndexOutOfBoundsException(); //數組越界異常

throw new ArrithmeticException(); //運算異常

throw new ClassCastException(); //類型轉換異常

throw new SqlException(); //對數據庫操作異常

(2)可控異常

當程序發生異常時,程序不會中斷。

拋出異常的格式:

try{

//可以有多個異常,但如果不是catch(Exception e),就要寫多個catch

}catch(Exception){

}finally{

//無論程序中出沒出現異常,finally都會執行。

}

例:try{

class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("abc");

}catch(Exception e){

e.printStackTrace();

}finally{

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

}

3.異常樹

(1)throw 與 throws 的區別:

throw: 用在代碼塊中,必須拋出異常,無意義。

throws:用在方法後。

(2)例:

class p1{

public void connDataBase() throws Exception{

class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306");

}

}

public class Main{

public static void main(String[] args){

p1 p = new p1();

try{

p.connDataBase();

}catch(Exception e){

e.printStackTrace();

}

}

}

二、工具類

1.Math函數

(1)abs(); //絕對值

例:Math.abs(-1); // 1

(2)round(); //四舍五入

例:Long a = Math.round(8.78); //9

Integer b = Math.round(8.78f); //9

(3)ceil(); //向上取整

(4)floor(); //向下取整

(5)pow( , ); //求平方

例:Double a = pow(2.0 , 3.0); //8

(6)sqrt(); //開平方

(7)random(); //隨機數 [0,1)

2.Date函數

(1)例:Date d = new Date();

SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd");

(2)日歷類

Calendar c = Calendar.getInstance();

set()方法:

c.set(Calendar.YEAR,2017);

c.set(Calendar.MONTH,0);

get()方法:

int date = c.get(Calendar.YEAR);

int date1 = c.get(Calendar.DATE);

getTime()方法:

//得到當前的時間

例:Date d = c.getTime();

SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String m = fm.format(d);

三、集合

可以放不同的數據類型,變長。

List(父類)——ArrayList(子類),LinkedList(子類)

1.ArrayList

(1)用於經常遍歷,查找的程序塊中。

(2)放置順序,就是存儲順序,允許放相同的對象。

(3)格式:ArrayList<類型> list = new ArrayList<類型>();

(4)方法:

add(); //添加方法

add(位置, 內容); //插入內容

addAll(); //將另一對象合並

remove(); //刪除

get(); //得到內容

(5)例:

ArrayList list = new ArrayList();

list.add(20);

list.add("hello world");

2.LinkList

格式:LinkedList<類型> list = new LinkedList<類型>();

(1)做大量添加,刪除操作。

(2)放置順序就是存儲順序,可以放相同對象。

(3)方法和ArrayList 相同,但比它多

addFirst(); //在開頭插入

addLast(); //在末尾插入

3.遍歷集合

(1)for循環遍歷

例:for(int i = 0 ; i < list..size(); i++){

String ob = list.get(i);

System.out.println(ob);

}

(2)叠代遍歷

例:Iterator iter = list.iterator();

while(iter.hasNext()){

String ob = iter.next();

System.out.println(ob);

}

(3)for each遍歷

例:for(String ob : list){

System.out.println(ob);

}

set(父類)—— HashSet(子類),TreeSet(子類)

1.HashSet

(1)存儲順序,不是放置順序。

(2)不能放相同的對象。

(3)格式:HashSet<類型> set = new HashSet<類型>();

(4)方法:沒有add(位置,內容);

沒有get();

其余和ArrayList,LinkedList一樣。

(5)遍歷:沒有for()遍歷,其余同ArrayList,LinkedList。

2.TreeSet

(1)字典順序存儲(升序)。

(2)不能放相同對象。

(3)格式:TreeSet<類型> set = new TreeSet<類型>();

(4)方法:同HashSet。

(5)遍歷:同HashSet。

TreeSet設置排序

寫一個規則,創建類,添加接口compare<對象>,書寫規則。

例:compare c = new compare();

TreeSet set = new TreeSet(c);

書寫判斷是否是同一對象規則

重寫hashcode(), equals() 方法

步驟:

類中右擊 ——> source ——> override/…… ——> equals()/hashcode()

hashCode(){

return 1;

}

equals(){

if(判斷規則){

return true;

}

}

java基礎 第十二章(異常處理、工具類、集合)