1、Object类(java.lang.Object)
(1)类Object是类层次的根类,每个类都使用Object作为超类。
(2)每个类都直接或者间接的继承自Object类。
(3)构造方法:
public Object();(只有一个默认的无参构造)
子类的默认构造方法默认访问的是父类Object的午餐构造方法。
(4)public in hashCode() : 返回该对象的哈希码值。
例:Student s1 = new Student();
System.out.println(s1.hashCode());
Student s2 = new Student();
System.out.println(s2.hashCode());
其中s1和s2的哈希值不同。
注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但不是实际地址值。
(5)public final Class getClass():返回此Object的运行时类
Class类的方法:
public String getName():以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或者void)名称。
例:Student s = new Student();
Class c = s.getClass(); //返回一个Class对象
String str = c.getName();
System.out.println(str); //打印全路径名称,包名....类名
(6)public String toString():返回该对象的字符串表示。
没有重写的之前:toString()方法的值等价于
getClass().getName() + '@' + Integer.toHexString(hashCode())
Integer类下的一份静态方法:
public static String toHexString(int i):把一个整数转换成一个十六进制表示的字符串。
建议:所有子类都重写toString()方法。
注意:直接输出一个对象的名称,其实就是调用该对象的toString()方法。
(7)public boolean equals(Object obj):指示其他某个对象是否与该对象“相等”。这个方法默认情况下比较的是地址值。
例:Student s1 = new Student();
Student s2 = new Student();
System.out.println(s1.equals(s2)); //false
源码:public boolean equals(Object obj) {
//this --- s1
//Object --- s2
return (this == obj);
}
==:
基本类型:比较的就是值是否相同
引用类型:比较的就是地址是否相同
equals:
引用类型:默认情况下,比较的是地址值。
(8)protected void finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象垃圾回收器调用此方法。用于垃圾回收,但是什么时候回收不确定。
(9)protected Object clone():创建并返回对象的一个副本。
A:重写该方法
(10)Cloneable:此类实现了Cloneable接口,以指示Object.clone()方法可以合法地对该类实例进行按字段复制。
这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了。