logo

Objektklasse in Java

Objektklasse in Java ist vorhanden in java.lang Paket.

uri vs. url
  • 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' title=

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 .