Java常用类(四)

目录

1. Date类

2. Calendar类

3. SimpleDateFormat类 

4. BigInteger类(大整数)

5. BigDecimal类(大浮点)


1. Date类

一个Date对象,表示某一时刻的时间。

构造方法:

Date date = new Date();

Date date = new Date(long d);

源码:

public Date() {
    this(System.currentTimeMillis());
}
public Date(long date) {
    fastTime = date;
}

date.getYear();  过期方法,不建议使用,但有新方法代替

import java.util.Date;

public class DateDemo {

    public static void main(String[] args) {

      
        //long t =  System.currentTimeMillis(); //t = 1637485760505

        Date date = new Date();//创建一个日期对象,里面包含了程序运行时的那一刻的时间,
//提供方法方便操作
        System.out.println(date.getTime());//1637485760505 日期对象 转为 long类型时间值
        System.out.println(date.getYear()+1900);// 称为过期方法,不建议使用,有新方法代替
        System.out.println(date.getMonth()+1);//从0开始,到11月结束

        Date date1 = new Date(1637483235781L);
        System.out.println(date1.getHours()); // 小时
        System.out.println(date1.getMinutes()); // 分
        System.out.println(date1.getSeconds()); //秒
    }


}

 

2. Calendar类

一个抽象的方法,抽象类不能表示创建对象。

Calendar.getInstance(); 获得一个子类的对象,使用 GregorianCalendar 公历

方法:

例:c1.get(Calendar. YEAR);

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class CalendarDemo {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        //Calendar c1 = new GregorianCalendar();
        System.out.println(c);
        /*
        java.util.GregorianCalendar[time=1637840865774,areFieldsSet=true,areAllFieldsSet=true,
        lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",
        offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],
        firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=10,
        WEEK_OF_YEAR=48,WEEK_OF_MONTH=4,DAY_OF_MONTH=25,DAY_OF_YEAR=329,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=4,
        AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=47,SECOND=45,MILLISECOND=774,ZONE_OFFSET=28800000,DST_OFFSET=0]
         */
        int date = c.get(Calendar.DAY_OF_MONTH);//本月第几天
        System.out.println(date);//26日
        System.out.println(c.get(Calendar.WEEK_OF_YEAR));//本年第几周 48
        System.out.println(c.get(Calendar.WEEK_OF_MONTH));//本月第几周 4
        System.out.println(c.get(Calendar.DAY_OF_MONTH));//本月第几天 26
        System.out.println(c.get(Calendar.DAY_OF_YEAR));// 本年第几天 330
        System.out.println(c.get(Calendar.DAY_OF_WEEK));// 本周第几天 6
        System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));//本月还剩几天 4天
        System.out.println(c.get(Calendar.AM_PM));//1表示下午,0表示上午
        System.out.println(c.get(Calendar.HOUR));//下午4点
        System.out.println(c.get(Calendar.HOUR_OF_DAY));//16点
        System.out.println(c.get(Calendar.MINUTE));//40分
        Date d = c.getTime();
        System.out.println(d);//Fri Nov 26 16:49:00 CST 2021
        long t = c.getTimeInMillis();
        System.out.println(t);//1637916540843
    }
}

3. SimpleDateFormat类 

SimpleDateFormat类是日期格式化类。

将字符串转换成 Date(对象)

例:在网页上输入生日(字符串:2001-10-15)-->(提交给java)后台 --> 转换为Date对象

将Date(对象)转换为 字符串  

例:java中的Date(对象)----> 传给网页 ---> 转换为字符串

构造方法:

SimpleDateFormat(格式); 例: yyyy-MM-dd

public SimpleDateFormat(String pattern)规则
{
    this(pattern, Locale.getDefault(Locale.Category.FORMAT));
}

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

public class SimpleDateFormatDemo {
    public static void main(String[] args) {

        /*
        第一种:将字符串转换为Date()对象
         */
        String bath = " 2001-04-01 10:15:23 214";
        SimpleDateFormat spd = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss SSS");
        try {
            Date date = spd.parse(bath);//需要抛出异常
            System.out.println(date);//Sun Apr 01 10:15:23 CST 2001
        } catch (ParseException e) {
            e.printStackTrace();
        }
      /*
      第二种:将Date()对象 转换为 字符串
       */
        Date d = new Date();
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS E");
        String s = sdf1.format(d);
        System.out.println(d); //Fri Nov 26 17:06:08 CST 2021

    }
}

4. BigInteger类(大整数)

BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数。

构造方法:

BigInteger(String val);

BigInteger(byte[] val);

基本运算方法:

add(),subtract(),multiply(),divide();


import java.math.BigInteger;

public class BigIntegerDemo {
    public static void main(String[] args) {

        BigInteger b1 = new BigInteger("9223372036854775807111111111111111111");
        BigInteger b2 = new BigInteger("2222222222222222222222222222222222222");

        BigInteger b3 =  b1.add(b2);//两个大整数相加
        BigInteger b4 = b1.subtract(b2); //两个大整数相减
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
        System.out.println(b4);

        System.out.println(b1.multiply(b3));//两个大整数相乘
        System.out.println(b1.divide(b3));//除法,结果为0

    }
}

5. BigDecimal类(大浮点)

原因:

十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值。

例:

public class BigDecimalDemo {
   
    public static void main(String[] args) {
        
        double a = 10-9.9;
        System.out.println(a);//0.09999999999999964
        double b = 0.8-0.7;
        System.out.println(b);//0.10000000000000009
        System.out.println(a==b);//false
        System.out.println(10-9.4);//0.5999999999999996
      
    }
}

构造方法:

BigDecimal(String val);

源码:

public BigDecimal(String val) {
    this(val.toCharArray(), 0, val.length());
}

基本运算方法:

add(),subtract(),multiply(),divide();

public class BigDecimalDemo {
    /*
       BigDecimal  大浮点
     */
    public static void main(String[] args) {
        //System.out.println(12-11.9);//0.09999999999999964

        BigDecimal b1 = new BigDecimal("12");
        BigDecimal b2 = new BigDecimal("11.9");

        System.out.println(b1.subtract(b2));

        BigDecimal b3 = new BigDecimal("10");
        BigDecimal b4 = new BigDecimal("3");

        //                               精度         舍入模式
        System.out.println(b3.divide(b4,3,BigDecimal.ROUND_CEILING));


    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值