ホームページ  >  記事  >  Java  >  オブジェクトクラス(画像とテキスト)の詳細な分析

オブジェクトクラス(画像とテキスト)の詳細な分析

不言
不言転載
2019-03-02 14:37:212689ブラウズ

この記事は、オブジェクト クラスの詳細な分析 (写真とテキスト) を提供します。一定の参考価値があります。必要な友人が参照できます。お役に立てれば幸いです。

Object クラスのメソッドとは何ですか?

registerNatives() [基礎となる実装、未調査] hashCode()equals(Object obj)clone( )toString() Notice()notifyAll()wait(long timeout) [オーバーロードが 2 つあります] Finalize()Object には合計 11 のメソッドがあり、そのうちの 1 つは基礎となる実装 registerNatives() で、そのうち 2 つは wait() ですwait(long timeout, int nanos) オーバーロードされたメソッド。別の属性があります: return bytecode file object

hashCode

publicnative int hashCode();

native

# の基礎となるメソッドによって実装されます。 ##equals

public boolean equals(Object obj) {
    return (this == obj);
}

メモリ アドレスを直接決定します

何をするのかを明確にするために、そのコメントを読んでみましょう:

オブジェクトクラス(画像とテキスト)の詳細な分析

オブジェクトクラス(画像とテキスト)の詳細な分析

コメントによると、次の点を要約できます。

  • equals() メソッドを書き直すには、メソッドをオーバーライドする必要があります。 hashCode()
  • equals() メソッドのデフォルトは比較オブジェクトのアドレスであり、== と同等の操作 Character## を使用します。
  • #hashCode()
  • このメソッドには、基礎となる層がハッシュ テーブルであるオブジェクトのパフォーマンスを向上させる機能があります。同じオブジェクト (オブジェクトが変更されていない場合): then繰り返し呼び出します
  • hashCode()
  • その後、返される int は同じになります。
  • hashCode()
  • デフォルトのメソッドはオブジェクトのアドレスから変換されます
  • equals()
  • メソッドには 5 つのデフォルトの原則もあります。
  • ##再帰性--->
  • equals()
      を呼び出すと、2 つのオブジェクトのどちらが
    • equals()## を呼び出したかに関係なく、true が返されます。 #すべて問題ありません、返されるものはすべて trueConsistency--->オブジェクトが変更されていない限り、複数の呼び出しでも対応する結果が返されます。 推移性--->
    • x.equals(y)
    • y.equals(z)
    • は両方とも true を返し、次のように結論付けることができます: x .equals(z)Return trueSymmetry --->x.equals(y) および
    • y.equals(x)
    • の結果は次のようになります。等しい。 渡されたパラメータは null で、戻り値は false
    • hashCode() が最下層としてハッシュ テーブルを使用すると言われる理由パフォーマンスを向上させるには? わかりやすい。 HashMap の挿入を確認してみましょう:
ハッシュ値が等しくない場合は、キーが等しくないことを直接判断できます。
toString

オブジェクトクラス(画像とテキスト)の詳細な分析toString メソッドは、主に

identify

clone

オブジェクトクラス(画像とテキスト)の詳細な分析

# に使用されます。 ##clone メソッドは、オブジェクトのクローンを作成するために使用されます。通常、クローンを作成するオブジェクトは

独立した

(元のオブジェクトから分離されています)
    ディープ コピーは、オブジェクトのすべてのメンバー変数を参照します。オブジェクト (変数参照の場合) を複製する必要があります。浅いコピーとは、メンバー変数が複製されていないことを意味します。
  • オブジェクトの複製方法は?
  • クローン オブジェクトは
  • Cloneable インターフェイスを実装する必要があります

    • クローン メソッドをオーバーライドする必要があります、できれば public に変更する必要があります
    • wait & Notice & NoticeAll
  • wait メソッドと Notify メソッドは、実際にはスレッド間の
通信を提供する Java の API です。

#wait、notify、notifyAll() のいずれであっても、

リスナー オブジェクト (ロック オブジェクト) によって呼び出される必要があります。 #簡単に言うと: これらはすべて同期されたコード ブロックで呼び出されます

。そうでない場合は例外がスローされます。
  • notify()
  • は、キューで待機している
  • スレッドを起動します (どのスレッドが起動されるかはわかりません)。
      notifyAll( )
    • 目覚めるのは待機キューですすべての スレッド
  • wait()
  • を引き起こしたスレッドが目覚める 4 つの状況が考えられます スレッドが中断されましたwait()時間が終了しました
  • によってnotify()
  • によって目覚めました
  • was
      notifyAll()
    • 起きてください
    • wait()
    • を呼び出すスレッドは ロックを解放します
    • 待機と通知がオブジェクト メソッドにある理由
    • 私たちの ロックはオブジェクト ロックであるため、 [忘れた場合は、Java ロック メカニズムを参照して詳細を確認してください] ため、すべてのオブジェクトがロックになる可能性があります。 現在のスレッドをオブジェクトのロックを待機させます。もちろん、このオブジェクトを通じて操作する必要があります。
    • ロック オブジェクトは 任意であるため、これらのメソッドはオブジェクト クラスで定義する必要があります。

    Thread.sleep()Object.wait()

    # の両方## 一時停止できます 現在のスレッドは CPU 制御を解放します。

      主な違いは、
    • Object.wait()オブジェクト ロックの制御を解放すると同時に CPU を解放することです。 And
    • Thread.sleep()
    • はロックを解放しません
    ##ただし、次のことに注意してください:

    #通知メソッドが呼び出された後、目覚めたスレッド はすぐにはロック オブジェクト を取得しません。代わりに、通知の同期コード ブロック

    が実行されるまで待ってから、
    がロック オブジェクトを取得します。finalizefinalize()` メソッドは、
    の後にオブジェクトをクリアします。ガベージ コレクター

    は以前に呼び出されていましたが、このメソッドはいつ呼び出すべきか分からず、

    不確実性があります

    一般的には書き換えません~ object

    1 回だけ呼び出されます。また、finalize() が呼び出されても、gc がそのオブジェクトをすぐにリサイクルするわけではないため、finalize() が呼び出された後、オブジェクトをリサイクルする必要がない可能性があります。リサイクルする、そして実際にリサイクルする必要があるとき リサイクルする場合、以前に一度呼び出されているため、finalize() が呼び出されず、問題が発生します。

以上がオブジェクトクラス(画像とテキスト)の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。