第二節:java.util 包
1 .java.util 包介紹
java.util 包提供了一些實用的方法和資料結構。比如日期類 Date,日曆類 Calendar 以及隨機數類 Random,同時包裡還提供了 collection 框架,像堆疊 Stack、向量 Vector、位集合 Bitset 以及雜湊表 Hashtable等表示資料結構的類。

本次 主要介紹 Date 類、Calendar 類、Random 類的相關知識,其他 collection 框架等方面的內容將在後面的課程進行介紹。
2 .Date 類
Date 類表示日期和時間,裡面封裝了操作日期和時間的方法。Date 類經常用來獲取系統當前時間。
我們來看看類 Date 中定義的未過時的構造方法:

例子:

但是 Date 類的很多方法自 JDK 1.1 開始就已經過時了。
其實,在我們有了 Calendar 後,就幾乎不用 Date 類了。
3. Calendar 類
在早期的 JDK 版本中,Date 類附有兩大功能:
允許用年、月、日、時、分、秒來解釋日期
允許對錶示日期的字串進行格式化和句法分析
在JDK1.1中提供了類 Calendar 來完成第一種功能,類 DateFormat 來完成第二項功能。DateFormat 是 java.text 包中的一個類。與 Date 類有所不同的是,DateFormat 類可以接受用各種語言和不同習慣表示的日期字串。
但是 Calendar 類是一個抽象類,它完成 Date 類與普通日期表示法之間的轉換,而我們更多的是使用 Calendar 類的子類 GregorianCalendar 類。它實現了世界上普遍使用的公曆系統。當然我們也可以繼承 Calendar 類,然後自己定義實現日曆方法。
先來看一看 GregorianCalendar 類的建構函式:

TimeZone 是 java.util 包中的一個類,其中封裝了有關時區的資訊。每一個時區對應一組 ID。類 TimeZone 提供了一些方法完成時區與對應 ID 兩者之間的轉換。
例如:

Locale 只是一種機制,它用來標識一個特定的地理、政治或文化區域獲取一個 Locale 物件的構造方法:

各位在引入包時,可能發現 java.util 裡面並沒有 Calendar 類,windows 和 linux 系統的使用者,可以在 Eclipse 選單欄裡找到window,選擇preference,找到java,點選Installed JRES,將執行環境改為javaSE-1.8就可以了(Mac的在Eclipse的偏好裡設定下,其他的都一樣)。
例子:




大家執行上面的程式碼後,看見控制檯上的輸出結果會不會有所疑問呢?
其實 month 的含義與 Date 類相同,0代表1月,11代表12月。
有的人可能不明白左後一個的輸出為什麼有時是 0 ,有時是 1,在這裡會涉及到 calendarNew 與 calendar 的建立時間點, calendarNew 經過增加和減少時間後恢復到原來的時間點,也就是最終比較的是誰先建立好,時間點靠後的大一些,而 calendarNew 建立的時間點只有可能是大於等於 calendar 的,需要根據實際的建立時間點進行比較。
大家可以驗證和嘗試一下引入上面所講的所有類,呼叫一下里面的各種方法吧(再次強調,自己寫程式碼的重要性哦!)
4 .Random 類
Java 實用工具類庫中的類 java.util.Random 提供了產生各種型別隨機數的方法。它可以產生 int、long、float、double 以及 Gaussian 等型別的隨機數。這也是它與 java.lang.Math 中的方法 Random() 最大的不同之處,後者只產生 double 型的隨機數。

普通方法原型:

上面的東西大家自己可以驗證一下。最重要是大家多多試驗一下。
歡迎關注微信公眾號: Java的學習之路
裡面資料非常全,從java初級到高階都有,視訊,電子書,面試寶典,簡歷模板,經典案例,原始碼分析程式設計師故事以及解決bug方法。。。。應有盡有,可以推薦大家一起學習下!!
