Java中Object类常⽤的12个⽅法(⼩结)
⽬录
equals()方法前⾔
2.hashCode⽅法
3.equals⽅法
4.clone⽅法
8.wait(longtimeout)⽅法
9.wait(longtimeout,intnanos)⽅法
10.wait⽅法
11.finalize⽅法
前⾔
Java 中的 Object ⽅法在⾯试中是⼀个⾮常⾼频的点,毕竟 Object 是所有类的“⽼祖宗”。Java 中所有的类都有⼀个共同的祖先 Object 类,⼦类都会继承所有 Object 类中的 public ⽅法。
先看下 Object 的类结构:
1. getClass ⽅法
public final native Class<?> getClass();
final ⽅法、获取对象的运⾏时 class 对象,class 对象就是描述对象所属类的对象。这个⽅法通常是和 Java 反射机制搭配使⽤的。
2. hashCode ⽅法
public native int hashCode();
该⽅法主要⽤于获取对象的散列值。Object 中该⽅法默认返回的是对象的堆内存地址。
3. equals ⽅法
public boolean equals(Object obj) { return (this == obj);}
该⽅法⽤于⽐较两个对象,如果这两个对象引⽤指向的是同⼀个对象,那么返回 true,否则返回 false。⼀般 equals 和 == 是不⼀样的,但是在 Object 中两者是⼀样的。⼦类⼀般都要重写这个⽅法。
4. clone ⽅法
protected native Object clone() throws CloneNotSupportedException;
该⽅法是保护⽅法,实现对象的浅复制,只有实现了 Cloneable 接⼝才可以调⽤该⽅法,否则抛出 CloneNotSupportedException 异常。
默认的 clone ⽅法是浅拷贝。所谓浅拷贝,指的是对象内属性引⽤的对象只会拷贝引⽤地址,⽽不会将引⽤的对象重新分配内存。深拷贝则是会连引⽤的对象也重新创建。
5. toString ⽅法
public String toString() { return getClass().getName() + "@" + HexString(hashCode()); }
返回⼀个 String 对象,⼀般⼦类都有覆盖。默认返回格式如下:对象的 class 名称 + @ + hashCode 的⼗六进制字符串。
6. notify ⽅法
public final native void notify();
final ⽅法,主要⽤于唤醒在该对象上等待的某个线程。
7. notifyAll ⽅法
public final native void notifyAll();
final ⽅法,主要⽤于唤醒在该对象上等待的所有线程。
8. wait(long timeout) ⽅法
public final native void wait(long timeout) throws InterruptedException;
wait ⽅法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait() ⽅法⼀直等待,直到获得锁或者被中断。wait(long timeout) 设定⼀个超时间隔,如果在规定
时间内没有获得锁就返回。
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 o 参数说明
timeout:最⼤等待时间(毫秒)
nanos:附加时间在毫秒范围(0-999999)
该⽅法导致当前线程等待,直到其他线程调⽤此对象的 notify() ⽅法或notifyAll()⽅法,或在指定已经过去的时间。此⽅法类似于 wait ⽅法的⼀个参数,但它允许更好地控制的时间等待⼀个通知放弃之前的量。实时量,以毫微秒计算,计算公式如下:1000000 * timeout + nanos
在所有其他⽅⾯,这种⽅法与 wait(long timeout) 做同样的事情。特别是 wait(0, 0) 表⽰和 wait(0) 相同。
10. wait ⽅法
public final void wait() throws InterruptedException { wait(0);}
可以看到 wait() ⽅法实际上调⽤的是 wait(long timeout) ⽅法,只不过 timeout 为 0,即不等待。
11. finalize ⽅法
protected void finalize() throws Throwable { }
该⽅法是保护⽅法,主要⽤于在 GC 的时候再次被调⽤,如果我们实现了这个⽅法,对象可能在这个⽅法中再次复活,从⽽避免被 GC 回收。
到此这篇关于Java中Object类常⽤的12个⽅法(⼩结)的⽂章就介绍到这了,更多相关Java Object类内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!