java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
Java的Object类是所有类的顶级父类,所有方法如下所示:
1. hashCode(),返回一个hash值,两个对象的hash值不同,那么两个对象equals肯定为false。hash相同,equals不一定为true。
获取对象的哈希值。其实就是对象的内存地址值十进制表示
2. equals()
用于比较两个对象的地址值是否相同。
我们获取对象后,比较它的地址值意义不大。所以也会对这个方法进行重写。
重写要完成什么功能,是根据需求定的。
3. clone() 只有实现Cloneable接口的对象才可以调用这个方法。clone()是浅复制。如果对象里面又关联其他对象那么需要重写clone()方法才能深复制。深复制是针对引用类型而言的,基本数据类型不用考虑。序列化也可以实现深复制。
4. toString()方法
返回对象的字符串表示。
表示格式:getClass().getName()+"@"+Integer.toHexString(hashCode());
5. notify() 唤醒在该对象上等待的某个线程
6. wait()
7. notifyAll()
8. getClass()
获取对象的字节码文件的描述类,String name = s.getClass().getName();
9. finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
10. registerNative()注册本地方法
==和equals的用法:
A:==怎么用?
**可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
**可以用于比较引用数据类型,比较的是对象的地址值是否相等。
B:equals怎么用?
equals只能用于比较引用数据类型的。
**Object提供的equals是用于比较对象地址值是否相同。
**自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的