high-level——Object类和Date类(1)

本文介绍了Java中的Object类,它是所有类的父类,提供了如hashCode()、toString()和equals()等基础方法。此外,讲解了Date类用于表示日期时间,并通过DateFormat进行格式化操作。还提到了Calendar类,它可以获取日期时间的各个部分并进行调整。示例代码展示了如何使用这些类进行日期处理。
摘要由CSDN通过智能技术生成

Object类

  1. 它是所有类的基类(超,父),它在java类的层次体系中具有最基础的地位。它含有12个公共的方法,在任何类的对象上都可以调用(或重写)这些方法,因此掌握该类的重点方法是我们了解所有类的基本特征的必须途径。
  2. 如果一个类没有继承其他的类,它一定继承了Object类。如果一个类的声明中没有 extends ,则表示它一定继承Object。
  3. Object类没有包含成员变量,也没有静态方法,只有一个无参的构造方法。
  4. Class getClass(),返回此Object的运行时类,运行时类就是被加载到方法区中的类的字节码,字节码被加载后,jvm会用一个Class类型的变量来引用它。该变量就是一个字节码对象,在框架设计中,反射技术用的非常多,反射技术就是利用字节码对象实现各种功能。
  5. int hashCode(),返回对象的哈希码值。不同的对象如果采用默认的哈希算法,它的哈希值是不相同的,因此,我们可以利用这个哈希值来判断两个变量引用的是否是同一个对象,这是对象之间比较的根本依据。那么不同的对象的哈希值一定不同。看源码,方法声明为 public native int hashCode(); native关键字表示本方法属于本地方法,此方法不是用java写的方法,而是由C语言写的封装在.dll文件中随jdk的安装带来的方法,属于底层方法。前面讲到的输出对象的地址其实就是 hashCode 的返回值。
  6. String toString(),返回对象的字符串表示形式。该方法返回值的前一部分是getClass().getName(),返回对象所属类的名称。后一部分是Integer.toHexString(hashCode()),就是对象哈希码的十六进制表示(常用来表达为对象的地址)。任何类如果没有重写 toString 方法,那么该方法返回的就是以上内容。如果一个类重写了 toString 方法,那么返回值就看方法如何重写。我们直接输出对象时,底层会调用对象的 toString 方法。在jdk中,有一些类重写了该方法,比如八大基本类型的包装类,比如String,比如Date。
  7. boolean equals(Object obj),默认功能,比较两个对象是否相等(==),源码:return (this == obj)。
  8. void finalize(),如果垃圾回收器即将回收当前对象,那么当前对象的该方法将被调用。垃圾回收器属于jvm中的守护线程(daemon),如果jvm中没有任何用户线程在执行,守护线程会退出,jvm就退出了。它的作用是用来回收内存中没有被任何变量所引用的对象(垃圾)。垃圾回收器的回收时机决定于其内部的特定算法,因此垃圾回收的时机是不确定的,我们可以通过System的类的gc()来通知垃圾回收器开始工作,但是不保证一定会工作。

Date类

  1. 在api中表示日期时间的对象,在工具包中。Date的对象中封装了一个单位为毫秒的Long类型的成员变量,该值的含义是从公历1970年1月1日8:00:00:000到date表示的当前日期所经过的毫秒数。

    • public Date()构造方法创建的对象表示当前日期。
  2. DateFormat类

    • DateFormat是日期时间格式化子类的抽象类,作用有两个,第一可以把Date类型的对象格式化为所需的字符串值;第二可以把一个符合格式的字符串日期时间转换为Date类型的对象。
  3. Calender类

    • 俗称日历类,是对Date类功能的一个补充。它的对象也可以用来表示当前的日期时间,getTime()方法返回当前日期时间的Date对象。它更重要的功能是可以得到日期时间的各个部分。注意,月份是0-11。
    package com.zhong.test3;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class DataDemo {
        public static void main(String[] args) {
            Date date = new Date();
            System.out.println(date);
            System.out.println(date.getTime() * 1.0/ (24 * 60 * 60 * 1000));
            DateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss SSS");
            //格式化日期为一个字符串
            String strDate = format.format(date);
            System.out.println(strDate);
            //也可以把一个格式化的字符串转换为date对象;
            String strDate1 = "1998年3月5日 00:00:00 000";
            try {
                Date date1 = format.parse(strDate1);
                System.out.println(date1);
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            //它的对象也可以用来表示当前的日期时间
            Calendar rightNow = Calendar.getInstance();
            System.out.println(rightNow.getTime());
            System.out.println(rightNow.get(Calendar.YEAR) + "年" + (rightNow.get(Calendar.MONTH) + 1) + "月");
            rightNow.add(Calendar.YEAR,2);
            System.out.println(rightNow.get(Calendar.YEAR) + "年" + (rightNow.get(Calendar.MONTH) + 1) + "月");
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Æ_华韵流风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值