Object、日期时间类、System类的简单使用

本文深入讲解了Java中Object类的基础方法、日期时间类(Date、DateFormat、Calendar)的使用技巧,以及System类的重要方法,如currentTimeMillis和arraycopy,帮助读者掌握这些核心类的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Object、日期时间类、System类的简单使用

1、Object的概述

A. Object类的含义:
Object类是所有类的父类.他里面的方法,所有的类都有.
B. toString()方法
含义: 输出对象的基本信息(没有重写输出地址值,如果重写输出成员信息)

建议: 自定义类,可以重写 toString方法.快捷键和构造与getter和setter类似
C. equals()方法
含义: 比较两个对象是否相等(没有重写比较地址值,如果重写比较成员值)

建议: 自定义类,可以重写 hashCode和equals方法.快捷键和构造与getter和setter类似

2、日期时间类

一 Date类
  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

  • public Date(long date)`:分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

    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 2018
            // 创建日期对象,把当前的毫秒值转成日期对象
            System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
        }
    }
    
//常用方法
long getTime()      //得到当前日期对象当中的毫秒数
setTime(long time)  //设置当前的毫秒数.从1970-1-1 00:00:00
二 DateFormat类

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

  • 格式化:按照指定的格式,从Date对象转换为String对象。

  • 解析:按照指定的格式,从String对象转换为Date对象。

    构造方法

    由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

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

    参数pattern是一个字符串,代表日期时间的自定义格式。

    格式规则

    常用的格式规则为:

    | 标识字母(区分大小写) | 含义   |
    | ----------- | ---- |
    | y           ||
    | M           ||
    | d           ||
    | H           ||
    | m           ||
    | s           ||
    

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

创建SimpleDateFormat对象的代码如:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Demo02SimpleDateFormat {
    public static void main(String[] args) {
        // 对应的日期格式如:2018-01-16 15:06:38
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }    
}
常用方法

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。

  • public Date parse(String source):将字符串解析为Date对象。

    format方法

    使用format方法的代码为:

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    /*
     把Date对象转换成String
    */
    public class Demo03DateFormatMethod {
        public static void main(String[] args) {
            Date date = new Date();
            // 创建日期格式化对象,在获取格式化对象时可以指定风格
            DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
            String str = df.format(date);
            System.out.println(str); // 2008年1月23日
        }
    }
    
parse方法

使用parse方法的代码为:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 把String转换成Date对象
*/
public class Demo04DateFormatMethod {
    public static void main(String[] args) throws ParseException {
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
        String str = "2018年12月11日";
        Date date = df.parse(str);
        System.out.println(date); // Tue Dec 11 00:00:00 CST 2018
    }
}
小练习:计算你活了多少天?
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
计算你活了多少天?
 */
public class Test {
    public static void main(String[] args) throws ParseException {
        //现在的时间:now
        String now = "2018年12月1日";
        //出生的时间:brith
        String brith = "1998年10月27日";
        //String->Date->long
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date d1 = sdf.parse(now);
        Date d2 = sdf.parse(brith);
        //获取两个时间的毫秒值
        long t1 = d1.getTime();
        long t2 = d2.getTime();
        long dayNum = (t1 - t2) / (1000 * 60 * 60 * 24);
        System.out.println(dayNum);
    }
}
四 Calendar类
获取方式

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:

Calendar静态方法

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

    例如:

    import java.util.Calendar;
    public class Demo06CalendarInit {
        public static void main(String[] args) {
            Calendar cal = Calendar.getInstance();
        }    
    }
    
常用方法

根据Calendar类的API文档,常用方法有:

  • public int get(int field):返回给定日历字段的值。

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

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

  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

    Calendar类中提供很多成员常量,代表给定的日历字段: ‘

    | 字段值          | 含义                   |
    | ------------ | -------------------- |
    | YEAR         ||
    | MONTH        | 月(从0开始,可以+1使用)       |
    | DAY_OF_MONTH | 月中的天(几号)             |
    | HOUR         | 时(12小时制)             |
    | HOUR_OF_DAY  | 时(24小时制)             |
    | MINUTE       ||
    | SECOND       ||
    | DAY_OF_WEEK  | 周中的天(周几,周日为1,可以-1使用) |
    
get/set方法

get方法用来获取指定字段的值,set方法用来设置指定字段的值,代码使用演示:

import java.util.Calendar;
public class CalendarUtil {
    public static void main(String[] args) {
        // 创建Calendar对象
        Calendar cal = Calendar.getInstance();
        // 设置年 
        int year = cal.get(Calendar.YEAR);
        // 设置月
        int month = cal.get(Calendar.MONTH) + 1;
        // 设置日
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
    }    
}
import java.util.Calendar;
public class Demo07CalendarMethod {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2020);
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2020年1月17日
    }
}
add方法

add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量。代码如:

import java.util.Calendar;
public class Demo08CalendarMethod {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2018年1月17日
        // 使用add方法
        cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
        cal.add(Calendar.YEAR, -3); // 减3年
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2015年1月18日; 
    }
}
getTime方法

Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象。

import java.util.Calendar;
import java.util.Date;
public class Demo09CalendarMethod {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        Date date = cal.getTime();
        System.out.println(date); // Tue Jan 16 16:03:09 CST 2018
    }
}

总练习:键盘录入你的出生日期,格式如下: 1999-3-1,要求显示为:1999年3月1日 周一 这一年当中的第XX天

/*键盘录入你的出生日期,格式如下:  1999-3-1
        要求显示为:
        1999年3月1日 周一 这一年当中的第XX天
*/
import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        //键盘录入日期
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的出生日期: 例如 1999-3-1");
        String str1=sc.nextLine();
        //分割字符串放进数组,在转换成int类型
        String [] arr1=str1.split("-");
        int year=Integer.parseInt(arr1[0]);
        int month=Integer.parseInt(arr1[1]);
        int mdate=Integer.parseInt(arr1[2]);
        //通过日历Calendar类去设置时间
        Calendar cal=Calendar.getInstance();
        cal.set(Calendar.YEAR,year);
        cal.set(Calendar.MONTH,month-1);
        cal.set(Calendar.DAY_OF_MONTH,mdate);
        //获取当前的时间是一年的第几天
        int i = cal.get(Calendar.DAY_OF_YEAR);
        //转换成字符串格式(题目要求的格式)
        Date d= cal.getTime();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 E");
        String str2 = sdf.format(d);
        //将数据拼接在一起
        StringBuilder sb=new StringBuilder();
        sb.append(str2).append("这一年当中的第").append(i).append("天");
        System.out.println(sb.toString());
    }
}

3、System类

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

一 currentTimeMillis方法

实际上,currentTimeMillis方法就是 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值

import java.util.Date;
public class SystemDemo {
    public static void main(String[] args) {
        //获取当前时间毫秒值
        System.out.println(System.currentTimeMillis());
    }
}
二 arraycopy方法
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。

    数组的拷贝动作是系统级的,性能很高。System.arraycopy方法具有5个参数,含义分别为:

     | 参数序号 | 参数名称    | 参数类型   | 参数含义       |
    | ---- | ------- | ------ | ---------- |
    | 1    | src     | Object | 源数组        |
    | 2    | srcPos  | int    | 源数组索引起始位置  |
    | 3    | dest    | Object | 目标数组       |
    | 4    | destPos | int    | 目标数组索引起始位置 |
    | 5    | length  | int    | 复制元素个数     |
    
练习

将src数组中前3个元素,复制到dest数组的前3个位置上复制元素前:

src数组元素[1,2,3,4,5],

dest数组元素[6,7,8,9,10]

复制元素后:

src数组元素[1,2,3,4,5],

dest数组元素[1,2,3,9,10]

import java.util.Arrays;
public class Demo11SystemArrayCopy {
    public static void main(String[] args) {
        int[] src = new int[]{1,2,3,4,5};
        int[] dest = new int[]{6,7,8,9,10};
        System.arraycopy( src, 0, dest, 0, 3);
        /*代码运行后:两个数组中的元素发生了变化
         src数组元素[1,2,3,4,5]
         dest数组元素[1,2,3,9,10]
        */
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值