BigDecimal
- double是近似值存储,需要借助BigDecimal才能精确运算
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
//0.09999999999999998
- BigDecimal执行除法运算时,除不尽会报错,给一个保留小数位数以及舍入模式
divide(BigDecimal bd,int scal,RoundingMode mode)
//subtract减法
BigDecimal b1 = new BigDecimal("1.0");
BigDecimal b2 = new BigDecimal("0.9");
//subtract减法
BigDecimal subtract = b1.subtract(b2);
System.out.println(subtract);
//add
System.out.println(b1.add(b2));
System.out.println(b1.multiply(b2));
//2:保留两位小数 BigDecimal.ROUND_HALF_UP:四舍五入
System.out.println(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));
Date
- Date表示特定的瞬间,精确到毫秒,Date类中大部分方法都已经被Calendar类中的方法所取代
- 时间单位:1秒=1000毫秒,1毫秒=1000微秒,1微秒=1000纳秒
public static void main(String[] args) {
//创建Date对象
Date date1 = new Date();
System.out.println(date1.toString());
//昨天
Date date2 = new Date(date1.getTime()-24*60*60*1000);
System.out.println(date2);
//方法after before
boolean after = date1.after(date2);
System.out.println(after);
System.out.println(date1.before(date2));
//compareTo():比较(0,-1,1)
System.out.println(date2.compareTo(date1));
//equals()
System.out.println(date1.equals(date2));
}
Calendar
- Calendar提供了获取或设置各种日历字段的方法
- 构造方法
- protected Calendar():由于修饰符是proteed,所以无法直接创建该对象
- 其他方法
public static void main(String[] args) {
//创建Calendar对象
Calendar instance = Calendar.getInstance();
System.out.println(instance.getTime().toLocaleString());
System.out.println(instance.getTimeInMillis());
//获取时间信息
System.out.println(instance.get(Calendar.YEAR));
//月从0-11
System.out.println(instance.get(Calendar.MONTH)+1);
System.out.println(instance.get(Calendar.DATE));
System.out.println(instance.get(Calendar.HOUR_OF_DAY));
System.out.println(instance.get(Calendar.MINUTE));
System.out.println(instance.get(Calendar.SECOND));
//修改时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE,8);
System.out.println(calendar.getTime().toLocaleString());
//add方法修改时间
calendar.add(Calendar.HOUR,1);
System.out.println(calendar.getTime().toLocaleString());
//补充方法
System.out.println(calendar.getActualMaximum(Calendar.DATE));
}
SimpleDateFormat
- SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。
- 进行格式化(日期->文本)
- 解析(文本->日期)
- (y,年)(M,月)(d,天)(H,小时0-23)(m,分钟)(s,秒)(S,毫秒)
public static void main(String[] args) throws ParseException {
//创建SimpleDateFormate对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
//创建Date
Date date = new Date();
//格式化date
String str = sdf.format(date);
System.out.println(str);
//解析
Date parse = sdf.parse("1998年02月09日18:20:28");
System.out.println(parse);
}
System类
- System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。
public static void main(String[] args) {
//arrayCopy():数组的复制
//src:原数组 srcPos:从哪个位置开始复制
//dest:目标数组 destPos:从哪个位置开始放
//final:复制长度
int[] arr = {20,13,45,67,28,6,99,24};
int[] dest = new int[8];
System.arraycopy(arr,1,dest,0,3);
for (int i = 0; i < arr.length; i++) {
System.out.print(dest[i]+"\t");
}
long start = System.currentTimeMillis();
long result=0;
for (long i =0;i<9999;i++){
for(long j=0;j<9999;j++){
long n = i+j;
result = result+n;
}
}
long end = System.currentTimeMillis();
System.out.println(result);
System.out.println("用时:"+(end-start));
- System.gc():回收垃圾
- System.exit():退出jvm
Random类
Math类
File类