Object类概述:
Object类是所有类的父类,即每个类都直接或简介继承自该类,所以一个Object类型的变量可以引用任何对象
在不明确给出父类的情况下,Java会自动把Object作为要定义类的父类。
Object类有一个默认构造方法public Object(),在构造子类实例时,都会先调用这个默认构造方法。
Object方法:
1、getClass()
public final native Class<?> getClass();
getClass()返回一个Class对象。常用于反射。
2、hashCode()
public native int hashCode();
该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象相等。
3、equals(Object obj)
public boolean equals(Object obj) {
return (this == obj);
}
该方法用于比较对象是否相等,而且此方法必须被重写。
4、clone()
protected native Object clone() throws CloneNotSupportedException;
clone()函数的用途是用来克隆一个当前存在的对象。浅拷贝。
5、toString()
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
该方法在打印对象时被调用,将对象信息变为字符串返回,默认输出对象地址。
6、notify()
public final native void notify();
用于唤醒一个在此对象监视器上等待的线程。
7、notifyAll()
public final native void notifyAll();
notifyAll()用于唤醒所有在此对象监视器上等待的线程。
8、wait(long timeout)
public final native void wait(long timeout) throws InterruptedException;
设定下一次获取锁的距离当前释放锁的时间间隔
9、wait(long timeout, int nanos)
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos > 0) {
timeout++;
}
wait(timeout);
}
10、wait()
public final void wait() throws InterruptedException {
wait(0);
}
wait()用于让当前线程失去操作权限,当前线程进入等待序列
11、finalize()
protected void finalize() throws Throwable { }
当一个堆空间中的对象没有被栈空间变量指向的时候,这个对象会等待被java回收