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值