Java基础加强重温_04:日期时间类()、System类()、BigDecimal类()、StringBuilder类()、包装类()、泛型()、Collection集合()

本文详细介绍了Java中日期时间类,包括Date、DateFormat和Calendar的使用,以及System类、BigDecimal类、StringBuilder类的常见方法。还探讨了包装类的基本概念、自动装箱与拆箱,以及泛型的使用,如泛型类、泛型方法和泛型接口。最后,讲解了Collection接口,特别是ArrayList与LinkedList的区别及常用功能。
摘要由CSDN通过智能技术生成

摘要

Java基础加强重温_04:
日期时间类【时间类Date、格式转换类DateFormat、日历类Calendar(与Date互转)】、
System类(exit、currentTimeMillis、数组复制arraycopy)、
BigDecimal类(加减乘除解决精度丢失)、
StringBuilder类(字符串拼接)、
包装类(基本类型与包装类,装箱拆箱,自动装箱拆箱)、
泛型【泛型类、泛型方法、泛型接口、泛型通配符(向上限定,向下限定)】、
Collection集合(单列集合,List,set,常用功能)

一、常用API–日期时间类

1、Date类

java.util.Date类表示特定的瞬间(年月日时分秒),精确到毫秒。

面试题

月份的表示是以0-11代表1-12月。即0代表1月,1代表2月,…
在这里插入图片描述

标准基准时间(称为“时代”)即1970年1月1日00:00:00 GMT

今年为什么是2020,因为选了个起点时间,2020年前,耶稣诞生。
Date也是选了起点,UNIX系统诞生的时间。MAC,IOS就是基于UNIX改的,LINUX也是UNIX的免费版,ANDROID基于LINUX。UNIX系统诞生约1969,所以找了 1970年1月1日 0时0分0秒作为语言时间相关类开始的时间

Date精确到毫秒。Date有参构造方法中有个long变量,表示从标准基准时间开始到现在累计的毫秒数。

秒与毫秒换算

1s=1000ms=10^3ms ,秒:SECOND,毫秒:MILLISECOND

Date类构造方法

public Date() :分配一个Date对象并对其进行初始化,表示当前的时间(年月日时分秒,格式为系统默认格式)
public Date(long date) :分配一个Date对象并将其初始化,表示从标准基准时间起,过去指定毫秒数后的时间(年月日时分秒,格式为系统默认格式)。

简单来说:
使用无参构造,可以自动设置当前系统时间的毫秒时刻。

  • 即new出来的date对象默认拿到的是当前时间(年月日时分秒);

指定long类型的构造参数,可以自定义毫秒时刻。

  • 即参数传入毫秒数,new出来的date对象拿到的是从1970年1月1日00:00:00(标准基准时间,称为“时代”),经过了这个毫秒数后的时间(年月日时分秒)。
import java.util.Date;
public class Demo01Date {
   
	public static void main(String[] args) {
   
		// 创建日期对象,把当前的时间日期转换成日期对象
		System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2020
		
		// 创建日期对象,把当前的毫秒值转成日期对象
		System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
	}
}

在使用println方法时,会自动调用Date类中的toString方法。Date类已经对Object类中的toString方法进行了覆盖重写,所以结果为指定格式的字符串。

Date类普通方法:

long getTime​() 返回自1970年1月1日以来,到当前Date对象日期时间累计过去的毫秒数。
void setTime​(long time) 修改Date对象的时间,设置为1970年1月1日00:00:00 的基础上加上参数指定毫秒数,与 new Date(long time)效果差不多

//访问格式
Date类对象.getTime();
Date类对象.setTime(long time);

代码示例

public class TestDate {
   
    public static void main(String[] args) {
   
        Date date = new Date();
        System.out.println(date); // Fri Apr 03 01:00:22 CST 2020
        
        long time = date.getTime();
        System.out.println(time); //1585846822673
        
        date.setTime(0); 
        System.out.println(date); //Thu Jan 01 08:00:00 CST 1970 (基准标准时间,中国是UTC+8八区,中国本地时间要在以上标准时间上面加8小时。)
                
        date.setTime(3600000);
        System.out.println(date); // Thu Jan 01 09:00:00 CST 1970
    }
}

2、DateFormat类(SimpleDateFormat)

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

DateFormat类的作用:

Date对象与String的互转

  • 1、格式化:把Date对象转为更好看的String
  • 2、解析:把表达日期String解析回Date对象

为什么要DateFormat类:

Date转String

Date主要表示1970年到某个时间的毫秒值(date对象),如果输出给用户看,用户是看不太懂的:

  • “Thu Oct 25 21:41:33 CST 2018”

用户实际上比较喜欢(String对象)

  • “2018年10月25日 21时41分33秒”
String转Date

因为前端传给后台往往是String,所以要转回Date对象

DateFormat类创建对象(通过子类SimpleDateFormat)

由于DateFormat为抽象类,不能直接使用,所以需要通过它的常用的子类 java.text.SimpleDateFormat创建,SimpleDateFormat就是为了达到DateFormat的效果而存在。这个类需要一个模式(格式)来指定格式化或解析的标准。

public SimpleDateFormat(String pattern) :用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

//参数pattern是一个字符串,结合格式规则,代表日期时间的自定义格式。
给定模式

理解:给定如何格式化Date对象的模式,以年月日时分秒区分:“2020年3月30日11时30分20秒”。或以/,:区分:“2020/3/30 11:30:20”

默认语言环境的日期格式符号(格式规则)
  • 年:yyyy
  • 月:MM
  • 日:dd
  • 时:HH
  • 分:mm
  • 秒:ss

理解:
格式化时,这些符号会提取Date对象里面时间的数字,转换成自定义格式。
解析时,这些符号会提取字符串里面对应位置的数字,转换成系统默认格式
20190928101801: yyyyMMddHHmmss

更详细的格式规则,可以参考SimpleDateFormat类的API文档。

DateFormat类常用方法

public String format(Date date) :将Date对象格式化为字符串。
public Date parse(String source) :将字符串解析为Date对象。

3、DateFormat类案例

需求1:

将当前时间的Date对象 转成 “2018年9月15日 19时18分19秒”

public class Demo02 {
   
    public static void main(String[] args) throws ParseException {
   
        //SimpleDateFormat继承了DateFormat,所以format方法
        //final修饰的方法无法被重写,所以被继承 这是错的
       
        //需求:将 当前时间的Date对象 转成 "2018年09月15日 19时18分19秒"
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 ^.^ HH时mm分ss秒");
        Date date = new Date();
        String formatDate = sdf.format(date);
        System.out.println("formatDate = " + formatDate); //2019/9/28 上午9:53
    }
}

需求2

将字符串 “2007-12-26 10:13:31” 转成 Date对象

public class Demo02 {
   
    public static void main(String[] args) throws ParseException {
   
        //需求:将字符串 "2007-12-26 10:13:31" 转成 Date对象
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        String dateString = "2007-12-26 10:13:31";
        
        //解析
        //光标移动到红色波浪线->alt+enter->选第一个,自动导包
        Date date2 = sdf2.parse(dateString);
        System.out.println("date2 = " + date2);
    }
}

3、Calendar类

Date类的缺点: 对日期的加减比较繁琐,获取日期的 属性(年,月,日…)很多方法已经过期。

java.util.Calendar 是日历类,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

理解:Calendar对象里面存储的数据就是Date对象转换为String对象的那些年月日时分秒,如:xxxx年xx月xx日xx时xx分xx秒

Calendar的作用:简化日期的操作,获取属性

获取Calendar对象,getInstance方法

Calendar为抽象类,不能直接创建对象,而是通过子类GregorianCalendar的静态方法getInstance创建。

  • 在该方法中通过多态方式,一系列的初始化,最后获得并返回Calendar对象。

Calendar的子类静态方法

public static Calendar getInstance() :使用默认时区和语言环境获得一个日历

获取Calendar对象

 Calendar cal = Calendar.getInstance();

Calendar类常用方法

int get​(int field)  返回给定日历属性/字段的值。

public void set(int field, int value) :将给定的日历字段设置为给定值。

void add​(int field, int amount)  根据日历的规则,将指定的时间量添加或减去给定的日历字段。

与Date实现转换

Date getTime(): 日历对象获取Date对象。理解:将Calendar对象当前的年月日时分秒数据转换成Date对象

setTime(Date date): 日历对象通过Date对象设置时间。理解:将Date对象的年月日时分秒数据替换到当前的Calendar对象

Calendar中的属性/字段

Calendar类中提供很多成员常量,代表给定的日历字段
在这里插入图片描述

4、Calendar类案例

Calendar、Date对象互转

	//抽取方法:选中需要提取的代码,快捷键:ctrl+alt+m 起个方法名 回车
    private static void test04() {
   
        //Date对象转Calendar对象。将Date的年月日时分秒数据替换到当前的Calendar对象
        //setTime(Date date): 日历对象通过Date对象设置时间
        Calendar cal = Calendar.getInstance();
        Date date = new Date(-1000);//1970 08:00:00
        cal.setTime(date);  //理解:将当前时间设置进日历即将Date对象转换成Calendar
        System.out.println("cal = " + cal);
       
        //Calendar对象转Date对象。将Calendar对象当前的年月日时分秒数据转换成Date对象
        //Date getTime(): 日历对象获取Date对象
        Date date2 = cal.getTime();
        System.out.println("date2 = " + date2);
    }

获取日历对象属性/字段(年月日时分秒)

    private static void test02() {
   
        //Calendar怎么获取对象 public static Calendar getInstance()
        Calendar cal = Calendar.getInstance();
        System.out.println(cal);
        
        //1代表年
        int year = cal.get(Calendar.YEAR);
        System.out.println("year = " + year);
        
        //因为月份从0开始
        int month = cal.get(Calendar.MONTH)+1;
        System.out.println(
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值