Java 杂类

文章介绍了Java中的BigDecimal类用于精确计算浮点数,包括基本的加减乘除运算,以及除法中的scale和RoundingMode参数。同时提到了Date和Calendar类用于处理日期,以及SimpleDateFormat进行日期格式化和解析。
摘要由CSDN通过智能技术生成

杂类

BigDecimal的使用

  • 位置:java.math包中

  • 作用:精确计算浮点数。

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

  • 方法:

    • BigDecimal add(BigDecimal bd)
    • BigDecimal subtract(BigDecimal bd)
    • BigDecimal multiply(BigDecimal bd)
    • BIgDecimal divide(BigDecimal bd)
  • 除法:divide(BIgDecimal bd,int scal,RoundingMode mode)

    • 参数scal:指定精确到小数点后几位
    • 参数mode:
      • 指定小数部分的取舍模式。通常采用四舍五入模式。
      • 取值为BigDecimal.ROUND_HALF_UP.
package com.lin.clas.demo10;

import java.math.BigDecimal;

public class Test {

    public static void main(String[] args) {
        //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);

        //除不尽
        //scale:保留几位小数
        //roundingMode:保留模式
        //BigDecimal.ROUND_HALF_UP:四舍五入
        BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"), 3, BigDecimal.ROUND_HALF_UP);
        System.out.println(r5);
    }

}

Date

  • Date表示特定的瞬间,精确到毫秒。Date类中大部分方法都已经被Calender类中的方法所取代。
package com.lin.clas.demo11;

import java.util.Date;

public class Test {

    public static void main(String[] args) {
        Date date1 = new Date();
        //今天
        System.out.println(date1.toString());
        System.out.println(date1.toLocaleString());
        //昨天
        Date date2 = new Date(date1.getTime()- (60*60*24*1000));
        System.out.println(date2.toLocaleString());

        //after before
        date1.after(date2);//true
        date1.before(date2);//false
        date2.before(date1);//true

        //compareTo();
        int r = date1.compareTo(date2);
        System.out.println(r);//1

        //比较是否相等
        boolean r1 = date1.equals(date2);//false
        System.out.println(r1);
    }

}

Calendar

  • Calendar提供了获取或构造各种日历字段的方法。
  • 构造方法:protected Calendar():由于修饰符是protected,所以无法创建该对象
  • 注意:月 从0-11 后面+1
方法名说明
static Calender getInstance()使用默认市区和区域获取日历
void set(int year,int mouth,int date,int hourofday,int minute,int second)设置日历的年、月、日、时、分、秒。
int get(int field)返回给定日历字段的值。字段如年月日等
void setTime(Date date)给定的Date设置此日历的时间。Date-Calender
Date getTime()返回一个Date表示此日历的时间Calender-Date
void add(int field,int amount)按照日历的规则,给制定字段添加或减少时间
long getTimeInMillies()毫秒为单位返回该日历的时间值
package com.lin.clas.demo12;

import java.util.Calendar;

public class Test {

    public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        System.out.println(calendar.getTimeInMillis());
        //获取时间信息
        //获取年
        int year = calendar.get(Calendar.YEAR);
        //月 从0-11 后面+1
        int month = calendar.get(Calendar.MONTH);
        //日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        //小时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);//24小时制
        int hour2 = calendar.get(Calendar.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 calendar2 = Calendar.getInstance();
        calendar2.set(Calendar.DAY_OF_MONTH, 5);
        System.out.println(calendar2.getTime().toLocaleString());

        //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

  • SimpleDateFormat是一个以语言环境有关的方式格式化和解析日期的具体类
  • 进行格式化(日期->文本)、解析(文本->日期)
字母日期或时间实例
y2018
M年中月份08
d月中天数10
H一天中小时数(0-23)22
m分钟26
s12
S毫秒268
package com.lin.clas.demo13;

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

public class Test {

    public static void main(String[] args) throws Exception{
        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);

        //解析:把字符串转化为时间
        String str2 = "2020年10月10日 10:10:10";
        Date date2 = sdf.parse(str2);
        System.out.println(date2.toLocaleString());
    }

}

System类

  • 主要用于获取系统的属性数据和其他操作,构造方法私有的。
方法名说明
static void arraycopy()复制数组
static long currentTimeMillis()获取当前系统时间,返回毫秒值
static void gc()建议JVM赶快启动垃圾回收器回收垃圾
static void exit(int status);退出JVM,如果参数为0表示正常退出JVM,非0表示异常退出JVM
package com.lin.clas.demo14;

public class Test {

    public static void main(String[] args) {
        //arraycopy()方法
        //src:源数组
        //srcPos:源数组的起始位置
        //dest:目标数组
        //destPos:目标数组的起始位置
        //length:复制的长度
        int[] arr = {1,2,3,4,5,6,7,8,9};
        int[] arr2 = new int[10];

        System.arraycopy(arr, 2, arr2, 0, 5);
        for (int i : arr2) {
            System.out.println(i);
        }
        //Arrays.copyOf()方法

        System.out.println(System.currentTimeMillis());

        //计算程序运行时间
        long start = System.currentTimeMillis();
        for(int i = 0;i<=99999999;i++)
        {
            for(int j = 0;j<=99999999;j++)
            {

            }
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);

        //System.gc():通知垃圾回收器回收垃圾
        System.gc();

        System.exit(0);//退出程序
        System.out.println(666);
    }

}

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值