A.所属包 java.lang
B.声明 public class Object
C.概述 是所有类的父类
D.构造方法: Object()
E.常用成员方法 a.protected Object clone() 创建并返回该对象的一个副本,需要实现Cloneable接口重写此方法 b.public boolean equals(Object obj) 判断两个对象地址值是否相等,如果子类想要判断内容是否相等需要重写此方法 c.protected void finalize() 当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法回收对象,但回收时间不确定 d.public Class<?> getClass() 返回该对象所在类的字节码文件对象 e.public int hashCode() 返回该对象的哈希码值 f.public String toString() 返回该对象的字符串表示,即: this.getClass().getName()+"@"+Integer.toHexString(this.hashCode())
Java初高级一起学习分享,共同学习才是最明智的选择,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3
F.注意事项 a.Object类时所有类的父类 b.子类如果没有重写equals()方法默认比较的是地址值 c.直接输出一个对象名,其实默认是调用该对象所在类的toString()方法 d.==和equals的区别? ==用于基本类型是比较值,用于引用类型是比较地址值 euqals只能用于引用类型,默认比较地址值 e.关于hashCode()与equals() 1.如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等 2.如果两个对象不equals,但hashcode可能相等 3.如果两个对象hashcode相等,但不一定equals 4.如果两个对象hashcode不相等,肯定不equals G.示例
class MyObject implements Cloneable//这里实现了Cloneable接口,重写了clone()方法 { protected Object clone() { return this; } } class MyObjectTest { public static void main(String[] args) { MyObject mobj1=new MyObject(); MyObject mobj2=new MyObject(); System.out.println(mobj1==mobj1.clone());//true System.out.println(mobj1.equals(mobj2));//false System.out.println(mobj1.hashCode());//697960108(每个人可能相同) System.out.println(mobj1.toString());//object.MyObject@299a06ac(每个人可能不相同) } }