Javaのオブジェクトクラス

Javaのオブジェクトクラス

オブジェクトクラス Java には存在します java.lang パッケージ。

  • すべてのクラスは、直接的または間接的に Object クラスから派生します。クラスが他のクラスを拡張しない場合、そのクラスはその直接の子クラスになります。 Javaオブジェクトクラス また、別のクラスを拡張する場合は、間接的に派生します。
  • Object クラスは、次のようないくつかのメソッドを提供します。 toString()equals() ハッシュコード() 他にもたくさんあります。
  • オブジェクト クラスは、Java プログラムの継承階層のルートとして機能します。

ここで使用するのは、 toString() そして ハッシュコード() オブジェクトクラスのメソッド クラスにカスタム文字列表現を提供する

Java
   // Java Code to demonstrate Object class   class   Person     {      String     n  ;     //name      // Constructor      public     Person  (  String     n  )     {      this  .  n     =     n  ;      }      // Override toString() for a       // custom string representation      @Override      public     String     toString  ()     {      return     'Person{name:''     +     n     +     ''}'  ;      }      public     static     void     main  (  String  []     args  )     {          Person     p     =     new     Person  (  'Geek'  );          // Custom string representation      System  .  out  .  println  (  p  .  toString  ());          // Default hash code value      System  .  out  .  println  (  p  .  hashCode  ());         }   }   

出力
Person{name:'Geek'} 321001045  

説明: 上の例では、 toString() を提供する方法 Person クラスのカスタム文字列表現 そして使用してください ハッシュコード() オブジェクトのデフォルトのハッシュ コード値を表示するメソッド。

オブジェクトクラスのメソッド

Object クラスは、次のような複数のメソッドを提供します。

  • toString() メソッド
  • hashCode() メソッド
  • equals(Object obj) メソッド
  • Finalize() メソッド
  • getClass() メソッド
  • clone() メソッド
  • wait() 通知() 通知All() (同時実行メソッド)
Java のオブジェクト クラス メソッド

1. toString() メソッド

toString() オブジェクトの文字列表現を提供し、オブジェクトを文字列に変換するために使用されます。クラス Object のデフォルトの toString() メソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字 `@'、およびオブジェクトのハッシュ コードの符号なし 16 進表現で構成される文字列を返します。

注記: オブジェクト参照を出力しようとすると、内部で toString() メソッドが呼び出されます。

例:

公開授業 学生 {

public String toString() {

「学生オブジェクト」を返します。

}

}

説明: toString() メソッドは、Student オブジェクトのカスタム文字列表現を返すようにオーバーライドされます。

2. hashCode() メソッド

すべてのオブジェクトに対して、JVM はハッシュコードである一意の番号を生成します。個別のオブジェクトに対して個別の整数を返します。このメソッドに関するよくある誤解は、 hashCode() メソッドが返すオブジェクトのアドレスが正しくないということです。アルゴリズムを使用して、オブジェクトの内部アドレスを整数に変換します。 hashCode()メソッドは ネイティブ Java ではオブジェクトのアドレスを見つけることが不可能であるため、C/C++ などのネイティブ言語を使用してオブジェクトのアドレスを見つけます。

hashCode() メソッドの使用:

コレクション内のオブジェクトの検索に使用されるハッシュ値を返します。 JVM (Java Virtual Machine) は、オブジェクトを HashSet HashMap Hashtable などのハッシュ関連のデータ構造に保存するときにハッシュコード メソッドを使用します。ハッシュ コードに基づいてオブジェクトを保存する主な利点は、検索が容易になることです。 

注記: の上書き ハッシュコード() このメソッドは、オブジェクトごとに一意の番号を生成するように実行する必要があります。たとえば、Student クラスの場合、ロール番号を返すことができます。これは一意であるため、 hashCode() メソッドからの学生のデータを取得します。 

例:

公開授業 学生 {

イントロール;

@オーバーライド

public int hashCode() {

リターンロール。

}

}

説明: ハッシュコード() このメソッドは、Student オブジェクトのロールに基づいてカスタム ハッシュ値を返すようにオーバーライドされます。

3.equals(Object obj)メソッド

等しい() メソッドは、指定されたオブジェクトと現在のオブジェクトを比較します。このメソッドをオーバーライドしてカスタムの等価条件を定義することをお勧めします。

注記: 通常はオーバーライドする必要があります。 ハッシュコード() 等しいオブジェクトには等しいハッシュ コードが必要であるという hashCode メソッドの一般規約を維持するために、このメソッドがオーバーライドされるたびにメソッドが使用されます。 

例:

公開授業 学生 {

イントロール;


@オーバーライド

public booleanquals(Object o) {

if (o 学生のインスタンス) {

return this.roll == ((学生) o).roll;

}

false を返します。

}

}

説明: 等しい() 比較するためにメソッドがオーバーライドされます ロール 2 つの Student オブジェクトの間。

4. getClass() メソッド

getClass() メソッドは「this」オブジェクトのクラス オブジェクトを返し、オブジェクトの実際のランタイム クラスを取得するために使用されます。このクラスのメタデータを取得するために使用することもできます。返される Class オブジェクトは、表現されたクラスの静的同期メソッドによってロックされているオブジェクトです。これは最終的なものであるため、オーバーライドしません。

例:

Java
   // Demonstrate working of getClass()   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      Object     o     =     new     String  (  'GeeksForGeeks'  );      Class     c     =     o  .  getClass  ();      System  .  out  .  println  (  'Class of Object o is: '      +     c  .  getName  ());      }   }   

出力
Class of Object o is: java.lang.String  

説明: getClass() メソッドは、「o」オブジェクトのランタイム クラスを出力するために使用されます。

注記: .class ファイルをロードした後、JVM は次のタイプのオブジェクトを作成します。 java.lang.クラス ヒープ領域内。このクラス オブジェクトを使用して、クラス レベルの情報を取得できます。広く使用されています 反射  

5.finalize()メソッド

ファイナライズ() メソッドは、オブジェクトがガベージ コレクションされる直前に呼び出されます。それはと呼ばれています ガベージコレクター オブジェクトへの参照がもう存在しないとガベージ コレクターが判断したとき。 Finalize() メソッドをオーバーライドしてシステム リソースを破棄し、クリーンアップ アクティビティを実行してメモリ リークを最小限に抑える必要があります。たとえば、サーブレット オブジェクトを破棄する前に、Web コンテナは常に Finalize メソッドを呼び出して、セッションのクリーンアップ アクティビティを実行します。 

注記: Finalize メソッドは単に呼び出されます 一度 オブジェクトが複数回ガベージ コレクションの対象である場合でも、そのオブジェクトに対して。 

例:

Java
   // Demonstrate working of finalize()   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {          Geeks     t     =     new     Geeks  ();      System  .  out  .  println  (  t  .  hashCode  ());      t     =     null  ;      // calling garbage collector      System  .  gc  ();      System  .  out  .  println  (  'end'  );      }      @Override     protected     void     finalize  ()      {      System  .  out  .  println  (  'finalize method called'  );      }   }   

出力
1510467688 end finalize method called  

説明: ファイナライズ() このメソッドは、オブジェクトがガベージ コレクションされる直前に呼び出されます。

6. clone() メソッド 

クローン() メソッドは、現在のオブジェクトのコピーである新しいオブジェクトを作成して返します。

例:

パブリック クラス Book は Cloneable {を実装します。

プライベート文字列 t; //タイトル


public Book(String t) {

this.t = t;

}

@オーバーライド

public Object clone() は CloneNotSupportedException をスローします {

super.clone()を返します;

}

}

説明: クローン() メソッドは、クローンされたコピーを返すようにオーバーライドされます。 本オブジェクト

7. 同時実行メソッド: wait()、notify()、およびnotifyAll()

これらのメソッドは以下に関連しています Java でのスレッド通信 。これらは、スレッドを待機させたり、並行プログラミングで他のスレッドに通知したりするために使用されます。

Java ですべてのオブジェクト クラス メソッドを使用する例

Java
   import     java.io.*  ;   public     class   Book     implements     Cloneable     {      private     String     t  ;     // title      private     String     a  ;     // author      private     int     y  ;     // year      public     Book  (  String     t       String     a       int     y  )      {      this  .  t     =     t  ;      this  .  a     =     a  ;      this  .  y     =     y  ;      }      // Override the toString method      @Override     public     String     toString  ()      {      return     t     +     ' by '     +     a     +     ' ('     +     y     +     ')'  ;      }      // Override the equals method      @Override     public     boolean     equals  (  Object     o  )      {      if     (  o     ==     null     ||     !  (  o     instanceof     Book  ))     {      return     false  ;      }      Book     other     =     (  Book  )  o  ;      return     this  .  t  .  equals  (  other  .  getTitle  ())      &&     this  .  a  .  equals  (  other  .  getAuthor  ())      &&     this  .  y     ==     other  .  getYear  ();      }      // Override the hashCode method      @Override     public     int     hashCode  ()      {      int     res     =     17  ;      res     =     31     *     res     +     t  .  hashCode  ();      res     =     31     *     res     +     a  .  hashCode  ();      res     =     31     *     res     +     y  ;      return     res  ;      }      // Override the clone method      @Override     public     Book     clone  ()      {      try     {      return     (  Book  )  super  .  clone  ();      }      catch     (  CloneNotSupportedException     e  )     {      throw     new     AssertionError  ();      }      }      // Override the finalize method      @Override     protected     void     finalize  ()     throws     Throwable      {      System  .  out  .  println  (  'Finalizing '     +     this  );      }      public     String     getTitle  ()     {     return     t  ;     }      public     String     getAuthor  ()     {     return     a  ;     }      public     int     getYear  ()     {     return     y  ;     }      public     static     void     main  (  String  []     args  )      {      // Create a Book object and print its details      Book     b1     =     new     Book  (      'The Hitchhiker's Guide to the Galaxy'        'Douglas Adams'       1979  );      System  .  out  .  println  (  b1  );      // Create a clone of the Book object and print its      // details      Book     b2     =     b1  .  clone  ();      System  .  out  .  println  (  b2  );      // Check if the two objects are equal      System  .  out  .  println  (  'b1 equals b2: '      +     b1  .  equals  (  b2  ));      // Get the hash code of the two objects      System  .  out  .  println  (  'b1 hash code: '      +     b1  .  hashCode  ());      System  .  out  .  println  (  'b2 hash code: '      +     b2  .  hashCode  ());      // Set book1 to null to trigger garbage collection      // and finalize method      b1     =     null  ;      System  .  gc  ();      }   }   

出力
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527  

説明: 上記の例は、次の使用法を示しています。 toString() 等しい()ハッシュコード() そして クローン() のメソッド 書籍クラス