BigDeciml、 Date、Calendar、SimpleDateFormat、System

BigDeciml

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

  1. 位置:java.math包中。
  2. 作用:精确计算浮点数。
  3. 创建方式:BigDecimal bd = new BigDecimal(“1.0”);
  4. 方法:
    • BIgDecimal add(BigDecimal bd) 加
    • BIgDecimal subtract(BigDecimal bd) 减
    • BIgDecimal multiply(BigDecimal bd) 乘
    • BIgDecimal divide(BigDecimal bd) 除
  5. 除法:divide (BigDecimal bd,int scal,RoundingMode mode)
    • 参数scal:指定精确到小数点后几位
    • 参数mode:
      1. 指定小数部分的取舍模式,通常采用四舍五入的模式。
      2. 取值为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);
        //面试题
        double result = (1.4-0.5)/0.9;
        System.out.println(result);
        //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);
        //2是保留两位小数,BigDecima.ROUND_HALF_UP
        BigDecimal r5 = new BigDecimal("20").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
        System.out.println(r5);
    }
}

Date

  1. Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
  2. 时间单位
    • 1秒 = 1000毫秒
    • 1毫秒= 1000微秒
    • 1微秒= 1000纳秒
public class Demo01 {
    public static void main(String[] args) {
        //创建Date对象
        Date date1 = new Date();
        System.out.println(date1);
        System.out.println(date1.toLocaleString());
        //昨天
        Date date2 = new Date(date1.getTime()-(60*60*24*1000));
        System.out.println(date2);
        //方法
        boolean b1 = date1.after(date2);
        System.out.println(b1);
        boolean b2 = date1.before(date2);
        System.out.println(b2);
        //比较compareTo();
        int d1 = date1.compareTo(date2);
        int d2 = date2.compareTo(date1);
        System.out.println(d1);
        System.out.println(d2);
        //比较是否相等equals();
        boolean b3 = date1.equals(date2);
        System.out.println(b3);

    }
}

Calendar

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

  2. 构造方法

    • procted Calendar():由于修饰符是protected,所以无法直接创建该对象。
  3. 其他方法

在这里插入图片描述

public class Demo01 {
    public static void main(String[] args) {
        //1.创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        System.out.println(calendar.getTimeInMillis());
        //2.获取时间信息
        //获取年
        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);
        System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);

        //3.修改时间
        Calendar calendar2 = Calendar.getInstance();
        calendar2.set(Calendar.DAY_OF_MONTH,14);
        System.out.println(calendar2.getTime().toLocaleString());
        //4.add()方法修改时间
        calendar2.add(Calendar.HOUR,1);
        System.out.println(calendar2.getTime().toLocaleString());
        //补充方法
        int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
        int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH) ;
        System.out.println(max);
        System.out.println(min);


    }
}

SimpleDateFormat

  1. SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期的具体类。
  2. 进行格式化(日期===》文本)、解析(文本===》日期)。
  3. 常用的时间模式字母

在这里插入图片描述

public class Demo01 {
    public static void main(String[] args) throws Exception{
     //创建SimpleDateFormat对象   y年m月
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月dd日HH:mm:ss");
        //创建Date
        Date date = new Date();
        //格式化date(把日期转换成字符串)
        String str = sdf.format(date);
        System.out.println(str);
        //解析(把字符串转换成日期)

        Date date2 = sdf.parse("2029年10月15日17:41:32");
        System.out.println(date2);
    }
}

System

  1. System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有。
    2在这里插入图片描述
public class Demo01 {
    public static void main(String[] args) {
        //arraycopy();数组的复制
        //src;原数组
        //srcPos;从哪个位置开始复制
        //dest;目标数组
        //destPos;目标数组的位置
        //length;复制的长度
        int[] arr = {12,54,78,413,4574,524,45,92};
        int[] dest = new int[8];
        System.arraycopy(arr,0,dest,0,arr.length);
        for (int i = 0; i <arr.length ; i++) {
            System.out.println(dest[i]);
        }

        long start = System.currentTimeMillis();
        for (int i = 0; i <99999999 ; i++) {
            for (int j = 0; j <999999999 ; j++) {
             int result = i+j;
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("用时:"+(end-start));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值