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() (同時実行メソッド)
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() 等しい()ハッシュコード() そして クローン() のメソッド 書籍クラス 。