Welcome to Yumao′s Blog.
Hello JavaSE Day05
, 2012年03月15日 , Java Language , 评论 在〈Hello JavaSE Day05〉中留言功能已關閉 ,

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 流

Code Package

课堂提纲教案

关键字:, , , ,

评论已关闭