Welcome to Yumao′s Blog.
Java SE Day05
====================
時間
時間的本質 long
時間的類型轉換 long <-> Date <-> Calendar
時間的IO String(年月日 時分秒) <-> long
時間的計算
使用Calendar類提供的方法 set add get等
class Person{
Date birthday;
//long birthday;
//Calendar birthday;
}
異常
啥是異常
1 時間日期
時間類的本質: Date = long + 操作
Calendar = long + 操作
時間的標準: (1970)GMT long (0)UTC long
1) java 中基本的時間表示 GMT long
2) Java提供了Date類型表示時間和日期
Date 是long類型的包裝
3) Calendar 是曆法的的抽象.
曆法: 公曆, 農曆, 太陽曆, ...
GregorianCalendar 是曆法的實現, 採用公曆
(太陽曆) 算法實現的.
Calender cal = Calender.getInstance();
4) Date 和 Calendar 的默認值就是當前時間
5) 時間的類型轉換
new Date(long)
date.setTime(long) cal.setTime(Date);
----------> --------->
long <---------- Date <--------- Calendar
date.getTime() cal.getTime()
6) 時間的計算
Calendar 提供豐富的時間計算方法 add() set() 等
如: 計算商品的促銷日期special Date:
輸入: 商品生產日期, 和保質期月份
返回: 商品的促銷日期, 是過期前兩周周的周五
7) 日期的輸入與輸出,
日期輸出: 的本質是 Date 轉換為格式化的String
日期輸入: 的本質是 將格式化的String轉換為Date
java.text.SimpleDateFormat fmt =
new SimpleDateFormat("yyyy-MM-dd");
構建SimpleDateFormat 一般提供日期的格式
"yyyy-MM-dd" 具體參看 javadoc
如: "yyyy-MM-dd HH:mm:ss"
"yyyyMMdd"
"dd/MM/yyyy"
"MM/dd/yyyy"
fmt.parse(String)可以實現將(合法)字符串解
析為日期類型, 經常用於處理日期輸入.
fmt.format(Date) 可以把日期格式化為字符串
用於輸出處理.
2 異常(Exception)
1) 異常的引出:
A 行為(方法, 過程)的意外結果
B Java 的異常是方法的意外結束
如: nextLine() nextInt()
2) Error和Exception的分類層次
Throwable 可拋出的, 是錯誤的跟, 包含異常類的實現代碼
|--Error 是系統不可恢復的錯誤,由JVM發生
| |--OutOfMemoryError 堆內存溢出
| |--StackOverflowError 棧內存溢出
|--Exception 程序可以檢查處理的異常,常見的異常繼承根
|--java.text.ParseException format解析對象時候發生
| 如:Date d = dateformat.parse("2010-5-5");
|--RuntimeException 非檢查異常,Javac忽略對
| 這類異常的語法檢查,如:異常拋出,異常處理等。
|--IllegalArgumentException
|--NullPointerException *
|--ArrayIndexOutOfBoundsException *
|--ClassCastException *
|--NumberFormatException * Integer.parseInt(S)
3) 異常的處理
A 使用try catch finally 捕獲
B 聲明拋出異常
try catch finally
try 是嘗試運程代碼塊,如果有異常會被隨後的catch捕獲
異常發生以後代碼不執行
catch代碼塊是異常處理代碼。需要提供合理的處理,異常的處理
是與具體業務邏輯有關。可以寫多個catch處理一系列異常,但是
要注意:異常的大小關係,大類型的放到後面處理。
finally 代碼塊,不管是否出現異常,總會執行的代碼塊。
經常用來處理現場的清理,比如:可靠的數據庫連接關閉。
4) 異常的分類
A 檢查異常 異常檢查規則:
一個方法如果拋出了異常,這個方法就必須聲明異常的拋出.
調用拋出異常的方法,必須處理異常
B 非檢查異常
Javac忽略對RuntimeException 的檢查, 包括子類型
5) 異常的處理原則 與忌諱
A 能夠底層處理的盡量處理,但是如果不能處理,必須拋出到
調用者(方法)。
B 建議在捕獲到異常時候使用e.printStackTrace(),打印到
控制台,輸出內容是:出現異常時候的方法調用堆棧.
忌諱:
A 不應該簡單的拋棄。
B 不建議 粗粒度處理異常 如:catch(Exception e).
處理方式,依賴於具體業務邏輯,很靈活。
6) 異常的實例:
User reg( String pwd, String email)
throws UserExistException;
User login(String email, String pwd)
throws NameOrPwdException;
自定義異常類一般繼承於Exception
軟件中會大量使用自定義異常,一般從Exception繼承。
異常類命名要有實際意義, 一般都手工繼承父類的構造器。
作業
1 複習實現全部課堂案例代碼
2 用戶帳號管理實現:
3 貪吃蛇
4 計算勞動合同的續簽日
預習: java IO 流