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