Java常用类之其他类

本文介绍了Java中BigDecimal类用于精确浮点数运算的方法,包括加减乘除及四舍五入策略。同时,讲解了Date和Calendar类在处理日期和时间上的应用,如获取和设置日期、比较日期以及格式化日期。最后提到了SimpleDateFormat类在日期格式化中的作用。
摘要由CSDN通过智能技术生成

BigDecimal

很多实际应用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal

位置:java.math包中

作用:精确计算浮点数

创建方式: BigDecimal bd = new BigDecimal(“1.0”);

如果除不尽

除法:divide(BigDecimal bd,int scal,RoundingMole mode)

参数scal:指定精确到小数点后几位

参数mode:指定小数部分的取舍模式,通常采用四舍五入的模式

取值为BigDecimal.ROUND_HALF_UP

public class Demo01 {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);//0.09999999999999998
        //BigDecimal,大的浮点数的精确计算
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");
        //减法
        BigDecimal r1  = bd1.subtract(bd2);
        System.out.println(r1);
        //加法
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2);
        //乘法
        BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3);
        //除法
        BigDecimal r4=new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
        System.out.println(r4);
    }
}
//结果
0.09999999999999998
0.1
1.9
0.90
1

Date类

Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代

时间单位

1秒 = 1000 毫秒 1毫秒 = 1000 微秒 1微秒 = 1000纳秒

public class DateCalendar {
    public static void main(String[] args) {
        //创建Date对象
        //今天
        Date date1 = new Date();
        System.out.println(date1.toString());
        //昨天
        Date date2 = new Date(date1.getTime() - 60 * 60 * 24*1000);
        System.out.println(date2.toString());
        //方法after before
        boolean b1 = date1.after(date2);
        System.out.println(b1);//true
        boolean b2 = date1.before(date2);
        System.out.println(b2);//false
        //比较compareTo();
        int d = date1.compareTo(date2);
        System.out.println(d);//1
        int d1 = date2.compareTo(date1);
        System.out.println(d1);//-1
        //比较是否相等equals()
        boolean b3 = date1.equals(date2);
        System.out.println(b3);//false

    }
}

Calendar类

Calendar提供了获取或设置各种日历字段的方法

构造方法

protected Calendar():由于修饰符是protected 所以无法直接创造该对象

public class trueCalendar {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toString());
        //获取时间信息
        //获取年 月 日 小时 分钟 秒
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);//0~11
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR12小时 HOUR_OF_DAY24小时
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+"小时"+minute+"分钟"+second+"秒");
        //修改时间
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.DAY_OF_MONTH,5);//修改为5号
        System.out.println(calendar1.getTime().toString());

        //4add方法修改时间
        calendar1.add(Calendar.HOUR,1);//1代表增加一个小时 -1的话就代表减少一个小时
        System.out.println(calendar1.getTime().toString());
        //补充方法
        int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);//当前月的最大天
        int min = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);//当前月的最小天
        System.out.println(max);
        System.out.println(min);

    }
}
Sat Jun 19 16:07:19 CST 2021
2021年6月19日16小时7分钟19秒
Sat Jun 05 16:07:19 CST 2021
Sat Jun 05 17:07:19 CST 2021
30
1

SimpleDateFoemat

是一个以与语言环境有关的方式来格式化和解析日期的具体类

进行格式化(日期->文本) 、 解析(文本->日期)

public class SimpleDateFormatMethod {
    public static void main(String[] args) {
        //创建对象 y 年
        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);

    }
}
image-20210619211451067

System 类

System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的

image-20210620175640394
public class SystemMethod {
    public static void main(String[] args) {
        //arraycopy数组的复制
        //src 原数组  srcPos 从哪个位置开始复制
        //dest目标数组 destPos目标数组位置  length 复制的长度
        int [] arr = {20,18,15,18,3,2,33,90};
        int [] dest = new int[8];
        System.arraycopy(arr,0,dest,0,arr.length);
        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);
        }
        //可以用来计算时间毫秒数
        System.out.println(System.currentTimeMillis());

        long start = System.currentTimeMillis();
        for(int i=0;i<9999;i++)
        {
            for(int j = 0;j<999;j++)
            {
                int result = i+j;
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("用时:"+(end-start));

        //System.gc();告诉垃圾回收器回收
        new Student("小明",19);
        new Student("小1",19);
        new Student("小2",19);
        System.gc();
        //退出jvm
        System.exit(0);//已经结束了后面的语句不执行了
        System.out.println("程序退出了");
    }
}
public class Student {
    private String name ;
    private int age ;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("回收了"+name);
    }
}
20
18
15
18
3
2
33
90
1624185441594
用时:5
回收了小2
回收了小1
回收了小明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值