Java開發中經常用到的類和方法,以下主要就日期是時間處理、金融數字處理、數學計算、隨機數、MD5加密等。
java.util.Date類
java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。日期時間的本質是一個long,它表示從1970-1-1 0:0:0.000以來的毫秒數。
System.currentTimeMillis() 可以得到當前系統時間所表示的毫秒數.
java.util.Date類
getYear(): 自1900年以來的年數
getMonth(): 0-11
getDate(): 1-31
getHours(): 0-23
getMinutes(): 0-59
getSeconds(): 0-59
getDay(): 0(sunday)-6(saturday)
getTime(): 自1970-1-1以來的毫秒數
toLocaleString(): 轉換為本地格式的字符串
日期比較
Java使用以下三種方法來比較兩個日期:
1. 使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然后比較這兩個值。
2. 使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3. 使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類實現了這個接口。
使用 SimpleDateFormat 格式化日期
java.text.SimpleDateFormat類支持String和Date的轉換。SimpleDateFormat 是一個以語言環境敏感的方式來格式化和分析日期的類。SimpleDateFormat 允許你選擇任何用戶自定義日期時間格式來運行。例如:

java.util.Calendar類
從JDK1.1版本開始,在處理日期和時間時,系統推薦使用Calendar類進行實現。在設計上,Calendar類的功能要比Date類強大很多。當然在實現方式上Calendar比Date類要復雜一點點。
創建一個代表系統當前日期的Calendar對象
Calendar c = Calendar.getInstance();//默認是當前日期
創建一個指定日期的Calendar對象
使用Calendar類代表特定的時間,需要首先創建一個Calendar的對象,然后再設定該對象中的年月日參數來完成。
//創建一個代表2009年6月12日的Calendar對象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
Calendar類對象常用方法
getInstance(): 得到當前日期和時間
set(): 可以只設定某個字段,且其它所有的數值會被重新計算
add(): add(Calendar.DATE, 10); 表示為10天后的日期,其它所有的數值會被重新計算
get(): 得到某一部分的值,如:YEAR,MONTH,DAY_OF_YEAR ...
getTime(): 得到java.util.Date
setTime(Date): 用java.util.Date給Calendar賦值
Calendar類對象信息的獲得
Calendar cal = Calendar.getInstance();
// 獲得年份
int year = cal.get(Calendar.YEAR);
// 獲得月份
int month = cal.get(Calendar.MONTH) + 1;
// 獲得日期
int date = cal.get(Calendar.DATE);
// 獲得小時
int hour = cal.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = cal.get(Calendar.MINUTE);
// 獲得秒
int second = cal.get(Calendar.SECOND);
// 獲得星期幾(注意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)
int day = cal.get(Calendar.DAY_OF_WEEK);
金融計算
java.math.BigDecimal類是java小數操作的一個專有類,在電商、金融行業 存儲跟金額有關的字段。
思考:java里面明明已經有了,float,double這種精度的小數,為什么還需要BigDecimal呢?這難道不是多余嗎?
接下來看一個例子:
@Test
public void testDoubleSimple() {
double a = 3;
double b = 10;
double c = a / b;
System.out.println(c);
}
控制臺輸出結果:0.3
在小數操作中,我們通常希望能有多種自由的定義方式。例如在不同的場景可能需要返回: 0.3, 0.4, 0.333 不同精度,在不同的精度進位時希望能自主控制。這個時候,就輪到BigDecimal出場了。
四則運算方法:
add()
subtract()
multiply()
divide()


注意: 盡量傳入String型參數來構造BigDecimal對象,這樣才能避免計算誤差。
MD5加密
MD5算法是不可逆的,與它同級別的算法還有SHA1, SHA256等。
jdk本身提供java.security.MessageDigest類,它實現了md5加密算法;除此之外,apache也提供更便捷的加密類。

數學運算
java.lang.Math類
pow(): 求冪值
sqrt(): 求平方根
ceil(): 向上取整
floor(): 向下取整
random(): 生成隨機的0-1的小數
round(): 四舍五入
abs(): 求絕對值
取隨機值
java.util.Random類
這是一個偽隨機序列生成器,可以給它提供一個種子(seed),不同的seed產生不同的隨機數序列。
Random random = new Random(100);
部分方法:
nextInt()
nextDouble()
java.util.UUID類
這是一個標識符生成器, 它生成全局唯一的32位字符串.
部分方法:
randomUUID()
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//獲取32位隨機UUID值