12は、一般的に使用されるメソッドのJava Objectクラスでは、あなたはいくつかを使用しましたか?

序文

Javaでオブジェクトのメソッドは、面接のポイントの非常に高い周波数である、すべての後に、それはすべてのクラスのオブジェクトである「先祖。」すべてのJavaクラスは、共通の祖先オブジェクトクラスを持って、サブクラスは、Objectクラスのすべてのパブリックメソッドを継承します。

v2-85a5500cdcad01b8c8283c93e2610bed_hd.png

オブジェクトクラスは、(:ALT + 7のショートカット)の構造を見てみましょう。

v2-1bb86a82a8f707138d47332b8fd1b152_hd.jpg

1. getClassメソッド

公共の最終ネイティブクラスのgetClass()<?>;

最終的なメソッド、オブジェクト・クラスのオブジェクトを取得するための操作は、オブジェクト・クラスが記述されたクラスに属するオブジェクトである場合。この方法は、通常、Javaのリフレクションと使用しています。

2. hashCode 方法

公共ネイティブint型のhashCode();

この方法は、主に、ハッシュ値取得オブジェクトのために使用されます。この方法の目的は、オブジェクトのデフォルトのヒープメモリのアドレスを返します。

3. equalsメソッドを

パブリックブール等しい(オブジェクトobj){リターン(この==のOBJ);}

2つのオブジェクト参照が同じオブジェクトを指している場合、2つのオブジェクトを比較するために使用される方法は、それがそうでない場合はfalse、trueを返します。一般的に等しく、==は同じではありませんが、オブジェクトに2が同じです。サブクラスは、一般的に、このメソッドをオーバーライドする必要がありました。

v2-4c103b2a36057f2a54b74a35157eef52_hd.png

4. Cloneメソッド

ネイティブオブジェクトのクローンを()CloneNotSupportedExceptionをスロー保護。

このメソッドは、Cloneableインタフェースは、CloneNotSupportedExceptionを投げるそうでない場合は、このメソッドを呼び出すことができます達成するために、浅いコピーの目的を達成するための方法で保護されています。

デフォルトでは、シャローコピークローンです。いわゆるシャローコピーは、アドレスのみをコピーするに引用した参考文献は、オブジェクトがメモリ参照を再割り当てしません属性オブジェクト内のオブジェクトを参照します。ディープコピーは、オブジェクト参照をしても再作成されません。

5. ToStringメソッド

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(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) 设定一个超时间隔,如果在规定时间内没有获得锁就返回。欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。

v2-0af38a01e39be5ee941bf532cee66505_hd.png

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 >= 500000 || (nanos != 0 && timeout == 0)) {
    timeout++;
  }

  wait(timeout);
}

参数说明

timeout:最大等待时间(毫秒)

nanos:附加时间在毫秒范围(0-999999)

该方法导致当前线程等待,直到其他线程调用此对象的 notify() 方法或notifyAll()方法,或在指定已经过去的时间。此方法类似于 wait 方法的一个参数,但它允许更好地控制的时间等待一个通知放弃之前的量。实时量,以毫微秒计算,计算公式如下:

1000000 * timeout + nanos

在所有其他方面,这种方法与 wait(long timeout) 做同样的事情。特别是 wait(0, 0) 表示和 wait(0) 相同。

10.待機方法

パブリック最終ボイド待ち()InterruptedExceptionあるスロー{待ち(0);}

私たちは待っていないこと、0にタイムアウトを除く待ち()メソッドは、実際に待機(長いタイムアウト)を呼び出す方法を、見ることができます。

11ファイナライズ方法

保護されたボイドファイナライズは、(){}のThrowableをスロー

この方法は、保護方法で主に私たちは、このメソッドを実装する場合は回収され、GCを避けるために、オブジェクトは、この過程で再び復活することができる、GCで再び呼ばれるように使用されています。


遂に

サポートのおかげで、ヨーヨーの記事を覚えて賞賛のポイントのように、みんなと共有へようこそ!


おすすめ

転載: blog.51cto.com/14442094/2446343