常用类学习-BigDecimal类
double d1 = 1.0;
double d2 = 0.9;
sout(d1-d2);//→ 0.09999999999
double d3 = (1.4-0.5)/0.9;
sout(d3);//→ 0.99999999999
精度要求较高 → BigDecimal类:精确计算浮点数
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
BigDecimal res = bd1.subtract(bd2);
sout(res);//→ 0.1
BigDecimal res2 = bd1.add(bd2);
sout(res2);//→ 1.9
BigDecimal res3 = bd1.multiply(bd2);
sout(res3);//→ 0.90
BigDecimal res4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
sout(res4);//→ 1
Date类
表示特定的瞬间,精确到毫秒,Date大部分方法都已经被Calendar类中的方法取代
Date date1 = new Date();
sout(data1.toString());//→ THu Dec 29 16:36:31 CST 2022
sout(data1.toLocalString());//→ 2022-12-29 16:37:17
sout(date1.getTime());//→ 1672303157941
Date date2 = new Date(date1.getTime()-(1000*60*60*24));
sout(date1.before(date2));//→ false
sout(date1.after(date2));//→ true
sout(date1.compareTo(date2));//→ 1
sout(date1.eequals(date2));//→ false
Calendar类
构造方法:protected Calendar():无法直接创建对象
Calender calendar = Calendar.getInstance();
sout(calendar.getTime().toLocalString());//→ 2022-12-29 16:50:22
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
sout(year+" "+month+" "+day+" "+hour+" "+minute+" "+second);
//修改
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,5);
sout(calendar2.getTIme().toLocalString());//→ 2022-5-29 ..
calendar2.add(Calendar.HOUR,1);
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
sout(max+" "+min);//→ 31 1
SimpleDateFormat类
格式化:日期→文本
解析:文本→日期
字母 | 日期或时间 |
---|---|
y | 年 |
M | 月份 |
d | 天数 |
H | 小时数 |
m | 分钟 |
s | 秒 |
S | 毫秒 |
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date();
String str = sdf.format(date);
sout(str);//→ 2022年12月29日 20:17:38
Date date2 = sdf.parse("1990年1月1日 00:00:00");
sout(date2);//→ Mon Jan 01 00:00:00 CST 1990
System类
主要用于获取系统的属性数据和其他操作,构造方法私有
方法名 | 说明 |
---|---|
static void arraycopy() | 复制数组 |
static long currentTimeMillis() | 获取当前时间,返回毫秒值 |
static void gc() | 建议JVM启动垃圾回收器 |
static void exit(int status) | 退出JVM |
System.arraycopy(src,srcPos,dest,destPos,length);
//src:原数组,srcPos:起始位置,dest:目标数组,destPos:目标数组位置,length:复制的长度
sout(System.currentTimeMillis());
public class Student{
private String name;
private int age;
protected void finalize() throws Throwable{
sout("回收了"+name+"对象,年龄"+age);
}
}
public class Demo{
public static void main(String[] args){
new Student("a",18);
new Student("b",19);
System.gc();//→ 回收了a对象,年龄:18 \n 回收了b对象,年龄:19
}
}
System.exit(0);
sout("程序结束了");//→ nothing,程序已经结束了
总结
内部类:成员内部类、静态内部类、局部内部类、匿名内部类
Object类:所有类的直接或间接父类
包装类:基本数据类型对应的引用数据类型
String类:字符串是常量,保存在常量池中
BigDecimal类:精确计算浮点数
Date类:特定时间
Calendar类:日历
SimpleDateFormat:格式化时间
System:系统类