Objektklasse in Java

Objektklasse in Java

Objektklasse in Java ist vorhanden in java.lang Paket.

  • Jede Klasse ist direkt oder indirekt von der Object-Klasse abgeleitet. Wenn eine Klasse keine andere Klasse erweitert, ist sie eine direkte untergeordnete Klasse der Java-Objektklasse und wenn es eine andere Klasse erweitert, wird es indirekt abgeleitet.
  • Die Object-Klasse stellt mehrere Methoden bereit, z toString()equals() hashCode() und viele andere.
  • Die Object-Klasse fungiert als Wurzel der Vererbungshierarchie in jedem Java-Programm.

Hier verwenden wir die toString() Und hashCode() Methoden der Object-Klasse um eine benutzerdefinierte Zeichenfolgendarstellung für eine Klasse bereitzustellen .

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  ());         }   }   

Ausgabe
Person{name:'Geek'} 321001045  

Erläuterung: Im obigen Beispiel überschreiben wir die toString() Methode zur Bereitstellung eines benutzerdefinierte Zeichenfolgendarstellung der Person-Klasse und nutzen Sie die hashCode() Methode zum Anzeigen des Standard-Hash-Codewerts des Objekts.

Objektklassenmethoden

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

  • toString()-Methode
  • hashCode()-Methode
  • equal(Object obj)-Methode
  • finalize()-Methode
  • getClass()-Methode
  • clone()-Methode
  • wait() notify() notifyAll() (Parallelitätsmethoden)
Objektklassenmethoden in Java

1. toString()-Methode

Der toString() stellt eine String-Darstellung eines Objekts bereit und wird zum Konvertieren eines Objekts in einen String verwendet. Die Standardmethode toString() für die Klasse Object gibt eine Zeichenfolge zurück, die aus dem Namen der Klasse, deren Instanz das Objekt ist, dem At-Sign-Zeichen „@“ und der vorzeichenlosen Hexadezimaldarstellung des Hash-Codes des Objekts besteht.

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

Beispiel:

öffentliche Klasse Student {

öffentlicher String toString() {

return 'Student object';

}

}

Erläuterung: Die toString()-Methode wird überschrieben, um eine benutzerdefinierte Zeichenfolgendarstellung des Student-Objekts zurückzugeben.

2. hashCode()-Methode

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, die 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 hashCode() Die Methode muss so durchgeführt werden, dass wir für jedes Objekt eine eindeutige Nummer generieren. Beispielsweise können wir für eine Studentenklasse die Rollennummer zurückgeben. eines Schülers aus der Methode hashCode(), da sie einzigartig ist. 

Beispiel:

öffentliche Klasse Student {

int roll;

@Override

public int hashCode() {

Rücklaufrolle;

}

}

Erläuterung: Der hashCode() Die Methode wird überschrieben, um einen benutzerdefinierten Hashwert basierend auf der Rolle des Student-Objekts zurückzugeben.

3. equal(Object obj) Methode

Der gleich() Die Methode vergleicht das angegebene Objekt mit dem aktuellen Objekt. Es wird empfohlen, diese Methode zu überschreiben, um benutzerdefinierte Gleichheitsbedingungen zu definieren.

Notiz: Im Allgemeinen ist es erforderlich, das zu überschreiben hashCode() -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. 

Beispiel:

öffentliche Klasse Student {

int roll;


@Override

öffentlicher boolescher Wert gleicht(Objekt o) {

if (o Instanz von Student) {

return this.roll == ((Student) o).roll;

}

return false;

}

}

Erläuterung: Der gleich() Die Methode wird zum Vergleich überschrieben rollen zwischen zwei Student-Objekten.

4. getClass()-Methode

Der getClass() Die Methode 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, überschreiben wir es nicht.

Beispiel:

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  ());      }   }   

Ausgabe
Class of Object o is: java.lang.String  

Erläuterung: Der getClass() Die Methode wird verwendet, um die Laufzeitklasse des 'o'-Objekts zu drucken.

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 Spiegelung  

5. finalize()-Methode

Der finalisieren() Die 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. Beispielsweise wird vor der Zerstörung des Servlet-Objekt-Webcontainers immer die Methode finalize aufgerufen, um Bereinigungsaktivitäten der 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. 

Beispiel:

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'  );      }   }   

Ausgabe
1510467688 end finalize method called  

Erläuterung: Der finalisieren() Die Methode wird unmittelbar vor der Garbage Collection des Objekts aufgerufen.

6. clone()-Methode 

Der Klon() Die Methode erstellt ein neues Objekt und gibt es zurück, das eine Kopie des aktuellen Objekts ist.

Beispiel:

Die öffentliche Klasse Book implementiert Cloneable {

privater String t; //Titel


öffentliches Buch(String t) {

this.t = t;

}

@Override

public Object clone() löst CloneNotSupportedException {

return super.clone();

}

}

Erläuterung: Der Klon() Die Methode wird überschrieben, um eine geklonte Kopie der zurückzugeben Buchobjekt .

7. Parallelitätsmethoden: wait() notify() und notifyAll()

Diese Methoden beziehen sich auf Thread Kommunikation in Java . Sie werden verwendet, um Threads warten zu lassen oder andere bei gleichzeitiger Programmierung zu benachrichtigen.

Beispiel für die Verwendung aller Objektklassenmethoden in 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  ();      }   }   

Ausgabe
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  

Erläuterung: Das obige Beispiel zeigt die Verwendung von toString() equal() hashCode() Und Klon() Methoden in der Buchklasse .