常用类学习-BigDecimal、Date、Calendar、SimpleDateFormat、System类

常用类学习-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:系统类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值