Java中的常用工具类

BigDecimal类

public class Dome5 {
    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);
    }
}

输出结果为:0.99999999999998

0.99999999999999

精度缺失了,因为double类型存储的是一个近似值,运算后依旧是一个近似值,比如:你看到的1.0,其实是0.9999999999。

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

位置:Java.math包中

作用:精确计算浮点数

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

//Bigdecimal ,精确计算大的浮点数
BigDecimal bd1 = new BigDecimal("1.0");//类型一定要选择字符串
BigDecimal bd2 = new BigDecimal("0.9");
//减法
System.out.println(bd1.subtract(bd2));
//加法
System.out.println(bd1.add(bd2));
//乘法
System.out.println(bd1.multiply(bd2));
//除法
//必须要能够除净,否则报错
BigDecimal r1=new BigDecimal("1.4").subtract(new BigDecimal(0.5)).divide(new BigDecimal("0.9"));
System.out.println(r1);
//添加保留几位小数,四舍五入的方法
//那就不太会了,四舍五入方法新版的JDK删了
//BigDecimal r2=new BigDecimal("10").divide(new BigDecimal(3),2,BigDecimal.ROUND_HALF_UP);
//System.out.println(r2);

Date 类

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

时间单位:

1秒=1000毫秒

1毫秒=1000微秒

1微秒=1000纳秒

import java.util.Date;

public class Date1 {
    //创建一个Date
    public static void main(String[] args) {
        //今天
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.toLocaleString());

        //昨天
        Date date1 =new Date(date.getTime()-24*60*60*1000);
        System.out.println(date1.toLocaleString());

        //方法after before
        System.out.println(date.after(date1));
        System.out.println(date.before(date1));

        //比较compareTo();
        System.out.println(date.compareTo(date1));//自由正负1和0
        //equals();比较是否相等
        System.out.println(date.equals(date1));
    }
}

Calender类

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

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

import java.util.Calendar;

public class Calendar1 {
    public static void main(String[] args) {
        //创建一个Calendar对象
        //Calendar对象是一个受保护的类,不能被new,只能通过getInstance()方法获取
        Calendar calendar =Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        System.out.println(calendar.getTimeInMillis());//打印毫秒值
        //获取时间信息
        //获取年
        int year = calendar.get(calendar.YEAR);
        //获取月   月是0——11,所以要加一才能跟我们显示一样
        int month = calendar.get(calendar.MONTH);
        //获取日
        int day = calendar.get(calendar.DAY_OF_MONTH);//或者calendar.DATE
        //获取小时
        int hour = calendar.get(calendar.HOUR_OF_DAY);//24小时制   HOUR 12小时制
        //获取分钟
        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(calendar1.DAY_OF_MONTH,17);
        System.out.println(calendar1.getTime().toLocaleString());
        //add方法
        calendar1.add(calendar1.HOUR,1);
        System.out.println(calendar1.getTime().toLocaleString());
        //补充方法
        int max=calendar1.getActualMaximum(calendar1.DAY_OF_MONTH);
        int min=calendar1.getActualMinimum(calendar1.DAY_OF_MONTH);
        System.out.println("这个月最多有几天"+max+"这个月最少有几天"+min);
    }
}

SimpleDateFormat类

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

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

常用的时间模式字母:

字母日期或时间示例
y2019
M年中月份08
d月中天数10
H1天中小时数(0—23)22
m分钟16
s59
S毫秒367
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormat1 {
    public static void main(String[] args) throws ParseException {
        //创建一个SimpleDateFormat对象
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
        //创建Date
        Date date = new Date();
        //格式化date(把日期转成时间字符串)
         String str = simpleDateFormat.format(date);
        System.out.println(str);
        //解析(把字符串转成日期)
        Date date1=simpleDateFormat.parse("2002年03月14日07:50:00");
        System.out.println(date1    );
    }
}

System 类

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

public class System1 {
    public static void main(String[] args) {
        //arraycopy:数组的复制
        //src:原数组
        //srcPos从那个位置开始复制0
        //dest:目标数组
        //destPos:目标数组的位置
        //length:复制数组的长度
        int[] arr={41,85,87,6,8,54,78};
        int[] dest=new  int[7];
        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());
        //System.gc();告诉垃圾回收期回收垃圾
        //退出JVM,0表示正常退出,非0表示异常退出  退出后后面代码不执行
        System.exit(0);
        System.out.println("啊对对对");

    }
}

小结

内部类

在一个类的内部再定义一个完整的类。

成员内部类、静态内部类、局部内部类、匿名内部类。

Object类

所有类的直接或间接父类,可存储任何对象。

包装类

基本数据类型所对应的引用数据类型,可以使Object统一所有数据。

String类

字符串是常量,创建之后不可改变,字面值保存再字符串池中,可以共享。

BigDecimal类

可精确计算浮点数。

Date类

特定时间。

Calendar类

日历

SimpleDateFormat

格式化时间

System类

系统类

这篇文章没有的可以去参看以往的文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值