7月17日筆記
今天的主要內容:
- 數(shù)據(jù)類型的包裝類
- 異常處理機制
1. 數(shù)據(jù)類型包裝類
A. 基本類型
- byte Byte
- short Short
- long Long
- char Character
- int Integer
- double Double
- boolean Boolean
- void Void
B. 相關操作(Integer為例)
-
裝箱
- Integer numObj = new Integer(500); //裝箱
- Integer numObj2 = 5; //自動裝箱
-
拆箱
- int num = numObj; //拆箱
- int num = numObj.intValue();
-
測試toString()和parseInt()
-
Integer類中重寫了toString()方法
String numStr = numObj.toString(); System.out.println(numStr); //輸出結果為500
Integer類中的parsrInt()方法
System.out.println(Integer.parseInt(numStr));
//輸出結果為:500
-
-
測試Integer.valueOf()
- System.out.ptintln(Integer.valueOf("123456"));
- 輸出結果為123456
- 此時涉及到自動裝箱知識的理解
- System.out.ptintln(Integer.valueOf("123456"));
-
自動裝箱的理解
Integer n1 = 5; Integer n2 = 5; System.out.println(n1==n2); //true; Integer n4 = 500; Integer n3 = 500; System.out.println(n3==n4); //false Integer n5 = 50; Integer n6 = new Integer(50); System.out.println(n5==n6); //false; /* 自動裝箱的理解: Integer n1 = 5; Integer n2 = 5; ·此時實際原理為:Integer n1 = Integer.valueOf(5); ·而valueOf方法對于-128 到 127之間的數(shù)值進行裝箱后返回一個Integer對象拙友。 ·因此同一數(shù)字5在valueOf方法作用下被返回同一Integer對象丐谋,這就是為什么n1==n2正確 而對于 Integer n3 = 500; Integer n4 = 500; ·此時不在-128 到 127之間,所以Integer n3 = new Integer(500); ·因此n3==n4不正確,n3和n4不是同一對象 同理我們可以理解 Integer n5 = 50; Integer n6 = new Integer(50); ·此時辐怕,n5通過Integer.valueOf(50)返回一個存在緩存中的Integer對象 ·而n6的Integer是new出來的巨税,因此n5和n6并不是同一對象的引用 */
2. 異常(Exception)
A. 異常分類
異常對象都派生于Throwable類的一個實例适篙,多有一場都繼承于Throwable
-
Throwable又分為:Error和Exception
- Error和Exception的區(qū)別:
- Error類描述了Java運行時系統(tǒng)內部錯誤和資源耗盡錯誤昵观,JVM引起的。
- Exception分為:RuntimeException和其他異常愉老。
- Error和Exception的區(qū)別:
-
RuntimeException
- RuntimeException異常為非受查的異常场绿,可不處理的異常,一般人為的異常
- 常見的RuntimeException異常有:
- ArrayOutOfBoundsException異常
- NullPointerException異常
- ArithmeticException異常
-
除RuntimeException以外的異常
- 必須要進行異常處理
B. 異常處理機制try-catch-finally
-
try-catch執(zhí)行順序問題:
-
在try語句塊中的任何代碼拋出了一個在catch子句中聲明的異常類嫉入,即
①程序將跳過try語句塊的其余代碼
②程序將執(zhí)行catch子句中的處理器代碼
③最后執(zhí)行finally子句中的代碼
在try中沒有異常焰盗,則執(zhí)行完try后,再執(zhí)行finally中的代碼
-
-
finally中return語句對try中return的影響
public class TestFinally{ public static void main(String[] args){ int n = 500; System.out.println("初值為:" + n); n = test(); System.out.println("調用test()方法后:n = " + n); System.out.println("此輸出證明:若finally子句中也有一個return語句咒林,則此時返回值會覆蓋原始的try中的返回值"); System.out.println("===============異常信息的獲取==============="); try{ throw new Exception("拋出異常"); } catch(Exception e){ System.out.println("e.getClass().getName() : " + e.getClass().getName()); System.out.println("e.getMessage() : " + e.getMessage()); } } public static int test(){ System.out.println("=======test()方法執(zhí)行中======="); try{ System.out.println("我是try中第一條語句熬拒,我沒有異常"); return 0; } finally{ System.out.println("此輸出證明try語句中的return語句執(zhí)行前會首先執(zhí)行finally,然后再return"); return 3; } } } /* 初值為:500 =======test()方法執(zhí)行中======= 我是try中第一條語句垫竞,我沒有異常 此輸出證明try語句中的return語句執(zhí)行前會首先執(zhí)行finally梦湘,然后再return 調用test()方法后:n = 3 此輸出證明:若finally子句中也有一個return語句,則此時返回值會覆蓋原始的try中的返回值 ===============異常信息的獲取=============== e.getClass().getName() : java.lang.Exception e.getMessage() : 拋出異常 */
-
throw和throws區(qū)別
- throw手動拋出一個異常
- throws用在方法聲明處件甥,聲明在方法上拋出一個異常,本方法的調用方法負責處理異常
-
異常信息獲取的常見函數(shù)
- e.printStackTrace();
- e.getMessage(); ---錯誤信息
- e.getClass().getName(); ---異常名稱