Java中的常用类(BigDecimal类,Date类,SimpleDateFormat类,Calendar类)

1.BigDecimal
  由于在计算的时候,float类型和double类型很容易丢失精度,所以,为了能精确的表示,计算浮点数,Java提供了BigDecimal类。不可变的,任意竞速的有符号十进制数。

构造方法

  • public BigDecimal(String val)

  • List item

成员方法

  • public BigDecimal add(BigDecimal augend)//加
  • public BigDecimal subtract(BigDecimal subtrahend)//减
  • public BigDecimal multiply(BigDecimal multiplicand)//乘
  • public BigDecimal divide(BigDecimal divisor)//除法
  • public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位,roundingMode 取舍模式 比如四舍五入
import java.math.BigDecimal;

public class Mytest1 {
    public static void main(String[] args) {
        //public BigDecimal(String val)
        BigDecimal num1 = new BigDecimal("138748943");
        BigDecimal num2 = new BigDecimal("236");
        //加
        BigDecimal add = num1.add(num2);
        //减
        BigDecimal subtract = num1.subtract(num2);
        //乘
        BigDecimal multiply = num1.multiply(num2);
        //除
        BigDecimal divide = num1.divide(num2);
        //除法但是小数点后保留几位
        /**
         *  num1 被除数
         * BigDecimal divisor 除数 num2
         * int scale 精确小数位
         * int roundingMode 舍入模式 ROUND_UP
         */
        BigDecimal divide1 = num1.divide(num2,6,BigDecimal.ROUND_UP);
        System.out.println(add);
        System.out.println(subtract);
        System.out.println(multiply);
        System.out.println(divide);
        System.out.println(divide1);

    }
}

运行结果为:

138749179
138748707
32744750548
587919.25
587919.250000

2.Date
  类Date表示特定的书案件,精确到毫秒
构造方法

  • public Date()
  • public Date(long date) //把一个long类型的毫秒值转换成一个日期对象

成员方法

  • public long getTime(): 获取一个日期对象对象毫秒值
  • public void setTime(long time): 给一个日期对象设置上指定的毫秒值
import java.util.Date;

public class Mytest3 {
    public static void main(String[] args) {
        //计算机元年即 1970 年 1 月 1 日 00:00:00 GMT
        // Date 日期类  类 Date 表示特定的瞬间,精确到毫秒
        Date date = new Date();
        System.out.println(date);
        //给计算机元年增加相应的时间量,这里比美国多了八个消失,所以下面输出的结果时间大了八小时
        Date date1 = new Date(1000 * 60 * 60 * 24);
        System.out.println(date1);
        Date date2 = new Date();
        long time = date.getTime();//和 System.currentTimeMillis(); 一样
        System.out.println(time);
        //给计算机元年设置相应的时间量
        date2.setTime(1000 * 60 * 60 );
        System.out.println(date);
    }
}

运行结果为:

Mon May 06 09:37:47 CST 2019
Fri Jan 02 08:00:00 CST 1970
1557106667236
Mon May 06 09:37:47 CST 2019

Date和long的相互转换

  • Date—>long 调用getTime方法
  • long—> Date 可以使用构造方法或者 setTime(long time )方法
import java.time.OffsetTime;
import java.util.Date;

public class Mytest4 {
    public static void main(String[] args) {
        //Date---- long 的转换
        //调用getTime方法
        //
        //long ---Date 的转换
        //        可以使用构造方法
        //setTime( long time)
        long time = new Date().getTime();
        System.out.println(time);
        long time2 = 1273734747848448l;
        Date date = new Date(time2);
        System.out.println(date);
        date.setTime(time2);
        System.out.println(date);
    }
}

运行结果为:

1557106810595
Wed Jan 18 15:44:08 CST 42333
Wed Jan 18 15:44:08 CST 42333

3.SimpleDateFormat
  是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本(字符串)),解析(文本 -> 日期)和规范化。
构造方法

  • public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
  • public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象

成员方法

  • public String format(Date date): 把一个日期对象格式化成一个字符串
  • public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意要以指定格式解析
字母日期或时间元素表示shili
yYear1996
M年 中的月份MonthJuly
w年中的周数Number27
W月份中的周数Number4
D年中的天数Num96
d月份中的天数NUm17
F月份中的星期Number2
E星期中的天数NumberTuesday

把一个日期对象格式化成一个字符串

import java.text.SimpleDateFormat;
import java.util.Date;

public class Mytest5 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        //使用空参创建SimpleDateFormat创建对象,那么使用的是默认的格式来格式化日期 19-5-2 上午10:56
        SimpleDateFormat format = new SimpleDateFormat();
        String format1 = format.format(date);
        System.out.println(format1);
        //可以指定格式来格式化日期
        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E ");
        String format3 = format2.format(date);
        System.out.println(format3);

    }
}

运行结果为:

Mon May 06 09:59:17 CST 2019
19-5-6 上午9:59
2019-05-06 09:59:17 星期一 

把一个日期字符串解析成一个日期对象 注意要以指定格式解析

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Mytest2 {
    public static void main(String[] args) throws ParseException {
        String str = "2019-05-06 10:34:56";
        //解析时,日期字符串和SimpleDateFormat("yyyy-MM-dd HH:mm:ss");它里面的格式要对应,否则解析失败
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = format.parse(str);
        System.out.println(date);
    }
}

运行结果为:

Mon May 06 10:34:56 CST 2019

4.Calendar类
  Calendar类时一个抽象类,它为特定瞬间与一组诸如YEAR,MONTH,等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,他是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
与其它语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
     Calendar rightNow = Calendar.getInstance();
成员方法

  • public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • public final void set(int year,int month,int date) 设置日历时间 年月日
import java.util.Calendar;

public class Mytest6 {
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        int i = instance.get(Calendar.YEAR);
        int i1 = instance.get(Calendar.DATE);
        int i2 = instance.get(Calendar.MONTH);
        System.out.println(i);
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(instance.get(Calendar.MINUTE));
        //给相应的日期字段,加上或减去相应的时间量
        instance.add(Calendar.YEAR,1);
        instance.add(Calendar.MONTH,-1);
        instance.add(Calendar.DAY_OF_MONTH,1);
        System.out.println(instance.get(Calendar.YEAR));
        System.out.println(instance.get(Calendar.MONTH));
        System.out.println(instance.get(Calendar.DAY_OF_MONTH));
        //可以设置年月日,时分秒 给某个日历字段设置值
        instance.set(Calendar.YEAR,9999);
        instance.set(Calendar.MONTH,6);
        instance.set(Calendar.DAY_OF_MONTH,5);
        System.out.println(instance.get(Calendar.YEAR));
        System.out.println(instance.get(Calendar.MONTH));
        System.out.println(instance.get(Calendar.DAY_OF_MONTH));
    }
}

运行结果为:

2019
6
4
36
2020
3
7
9999
6
5
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值