logo

Objektklasse in Java

Objekt Klasse ist anwesend in java.lang Paket. Jede Klasse in Java ist direkt oder indirekt von abgeleitet Objekt Klasse. Wenn eine Klasse keine andere Klasse erweitert, ist sie eine direkte untergeordnete Klasse von Objekt und wenn eine andere Klasse erweitert wird, wird sie indirekt abgeleitet. Daher stehen die Methoden der Object-Klasse allen Java-Klassen zur Verfügung. Daher fungiert die Objektklasse als Wurzel der Vererbungshierarchie in jedem Java-Programm.

Objektklasse in Java

Verwenden von Objektklassenmethoden

Die Object-Klasse stellt mehrere Methoden bereit, die wie folgt lauten:



  • toString()-Methode
  • hashCode() method
  • equal(Object obj)-Methode
  • finalize()-Methode
  • getClass()-Methode
  • clone()-Methode
  • Methoden wait(), notify() notifyAll()

1. toString()-Methode

toString() stellt eine String-Darstellung eines Objekts bereit und wird zum Konvertieren eines Objekts in einen String verwendet. Die standardmäßige toString()-Methode für die Klasse Object gibt einen String zurück, der aus dem Namen der Klasse, deren Instanz das Objekt ist, dem At-Sign-Zeichen „@“ und der vorzeichenlosen Hexadezimaldarstellung des Hash-Codes des Objekts besteht. Mit anderen Worten, es ist definiert als:

// Default behavior of toString() is to print class name, then // @, then unsigned hexadecimal representation of the hash code // of the object  public String toString() {  return getClass().getName() + '@' + Integer.toHexString(hashCode()); }>

Es wird immer empfohlen, das zu überschreiben toString() Methode, um unsere eigene String-Darstellung von Object zu erhalten. Weitere Informationen zum Überschreiben der toString()-Methode finden Sie unter – Überschreiben von toString() in Java

Notiz: Immer wenn wir versuchen, eine Objektreferenz zu drucken, wird intern die Methode toString() aufgerufen.

Student s = new Student();  // Below two statements are equivalent System.out.println(s); System.out.println(s.toString());>

2. hashCode() method

Für jedes Objekt generiert JVM eine eindeutige Nummer, die einen Hashcode darstellt. Es gibt unterschiedliche Ganzzahlen für unterschiedliche Objekte zurück. Ein häufiges Missverständnis über diese Methode besteht darin, dass die Methode hashCode() die Adresse des Objekts zurückgibt, was nicht korrekt ist. Es wandelt die interne Adresse des Objekts mithilfe eines Algorithmus in eine Ganzzahl um. Die Methode hashCode() ist einheimisch Da es in Java unmöglich ist, die Adresse eines Objekts zu finden, werden native Sprachen wie C/C++ verwendet, um die Adresse des Objekts zu finden.

Verwendung der Methode hashCode()

Es gibt einen Hashwert zurück, der zum Durchsuchen von Objekten in einer Sammlung verwendet wird. JVM (Java Virtual Machine) verwendet die Hashcode-Methode beim Speichern von Objekten in hashingbezogenen Datenstrukturen wie HashSet, HashMap, Hashtable usw. Der Hauptvorteil des Speicherns von Objekten basierend auf Hashcode besteht darin, dass die Suche einfacher wird.

Notiz: Überschreiben von Hash-Code() Die Methode muss so durchgeführt werden, dass wir für jedes Objekt eine eindeutige Nummer generieren. Für eine Schülerklasse können wir beispielsweise die Rollennummer zurückgeben. eines Schülers aus der Methode hashCode(), da sie einzigartig ist.

Java




// Java program to demonstrate working of> // hashCode() and toString()> public> class> Student {> >static> int> last_roll =>100>;> >int> roll_no;> >// Constructor> >Student()> >{> >roll_no = last_roll;> >last_roll++;> >}> >// Overriding hashCode()> >@Override> public> int> hashCode() {>return> roll_no; }> >// Driver code> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> >// Below two statements are equivalent> >System.out.println(s);> >System.out.println(s.toString());> >}> }>

>

>

Ausgabe :

Student@64 Student@64>

Beachten Sie, dass 4*160+ 6*161= 100

3. Methode equal(Object obj).

Es vergleicht das angegebene Objekt mit diesem Objekt (dem Objekt, für das die Methode aufgerufen wird). Es bietet eine generische Möglichkeit, Objekte auf Gleichheit zu vergleichen. Es wird empfohlen, das zu überschreiben equal(Objekt obj) Methode, um unsere eigene Gleichheitsbedingung für Objekte zu erhalten. Weitere Informationen zum Überschreiben der Methode equal(Object obj) finden Sie unter – Überschreiben der Methode equal in Java

Notiz: Im Allgemeinen ist es erforderlich, das zu überschreiben Hash-Code() Methode immer dann, wenn diese Methode überschrieben wird, um den allgemeinen Vertrag für die hashCode-Methode beizubehalten, der besagt, dass gleiche Objekte gleiche Hash-Codes haben müssen.

4. getClass()-Methode

Es gibt das Klassenobjekt dieses Objekts zurück und wird verwendet, um die tatsächliche Laufzeitklasse des Objekts abzurufen. Es kann auch verwendet werden, um Metadaten dieser Klasse abzurufen. Das zurückgegebene Klassenobjekt ist das Objekt, das durch statische synchronisierte Methoden der dargestellten Klasse gesperrt wird. Da es endgültig ist, können wir es nicht außer Kraft setzen.

Java




// Java program to demonstrate working of getClass()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Object obj =>new> String(>'GeeksForGeeks'>);> >Class c = obj.getClass();> >System.out.println(>'Class of Object obj is : '> >+ c.getName());> >}> }>

>

>

JFX-Java-Tutorial

Ausgabe:

Class of Object obj is : java.lang.String>

Notiz: Nach dem Laden einer .class-Datei erstellt JVM ein Objekt dieses Typs java.lang.Class im Heap-Bereich. Wir können dieses Klassenobjekt verwenden, um Informationen auf Klassenebene abzurufen. Es ist weit verbreitet in Betrachtung

5. finalize()-Methode

Diese Methode wird unmittelbar vor der Garbage Collection eines Objekts aufgerufen. Es heißt Müllsammler für ein Objekt, wenn der Garbage Collector feststellt, dass keine weiteren Verweise auf das Objekt vorhanden sind. Wir sollten die finalize()-Methode überschreiben, um Systemressourcen zu entsorgen, Bereinigungsaktivitäten durchzuführen und Speicherlecks zu minimieren. Rufen Sie beispielsweise vor der Zerstörung des Webcontainers für Servlet-Objekte immer die Methode finalize auf, um Bereinigungsaktivitäten für die Sitzung durchzuführen.

Notiz: Die finalize-Methode wird einfach aufgerufen einmal für ein Objekt, obwohl dieses Objekt mehrmals für die Garbage Collection geeignet ist.

Java




// Java program to demonstrate working of finalize()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Test t =>new> Test();> >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'>);> >}> }>

>

>

Ausgabe:

1510467688 finalize method called end>

6. clone()-Methode

Es gibt ein neues Objekt zurück, das genau mit diesem Objekt übereinstimmt. Informationen zur clone()-Methode finden Sie unter Klon() .

Die restlichen drei Methoden Warten() , benachrichtigen() notifyAll() beziehen sich auf Parallelität. Beziehen auf Inter-Thread-Kommunikation in Java für Details.

Beispiel für die Verwendung aller Object-Klassenmethoden in Java

Java




import> java.io.*;> public> class> Book>implements> Cloneable {> >private> String title;> >private> String author;> >private> int> year;> >public> Book(String title, String author,>int> year)> >{> >this>.title = title;> >this>.author = author;> >this>.year = year;> >}> >// Override the toString method> >@Override> public> String toString()> >{> >return> title +>' by '> + author +>' ('> + year +>')'>;> >}> >// Override the equals method> >@Override> public> boolean> equals(Object obj)> >{> >if> (obj ==>null> || !(obj>instanceof> Book)) {> >return> false>;> >}> >Book other = (Book)obj;> >return> this>.title.equals(other.getTitle())> >&&>this>.author.equals(other.getAuthor())> >&&>this>.year == other.getYear();> >}> >// Override the hashCode method> >@Override> public> int> hashCode()> >{> >int> result =>17>;> >result =>31> * result + title.hashCode();> >result =>31> * result + author.hashCode();> >result =>31> * result + year;> >return> result;> >}> >// 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> title; }> >public> String getAuthor() {>return> author; }> >public> int> getYear() {>return> year; }> >public> static> void> main(String[] args)> >{> >// Create a Book object and print its details> >Book book1 =>new> Book(> >'The Hitchhiker's Guide to the Galaxy'>,> >'Douglas Adams'>,>1979>);> >System.out.println(book1);> >// Create a clone of the Book object and print its> >// details> >Book book2 = book1.clone();> >System.out.println(book2);> >// Check if the two objects are equal> >System.out.println(>'book1 equals book2: '> >+ book1.equals(book2));> >// Get the hash code of the two objects> >System.out.println(>'book1 hash code: '> >+ book1.hashCode());> >System.out.println(>'book2 hash code: '> >+ book2.hashCode());> >// Set book1 to null to trigger garbage collection> >// and finalize method> >book1 =>null>;> >System.gc();> >}> }>

>

>

Ausgabe

The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) book1 equals book2: true book1 hash code: 1840214527 book2 hash code: 1840214527>