logo

Objectklasse in Java

Objectklasse op Java is aanwezig in java.lang pakket.

Armstrong nummer
  • Elke klasse is direct of indirect afgeleid van de Object-klasse. Als een klasse geen andere klasse uitbreidt, is het een directe onderliggende klasse van de Java-objectklasse en als het een andere klasse uitbreidt, is het indirect afgeleid.
  • De Object-klasse biedt verschillende methoden, zoals toString()is gelijk aan() hashCode() en vele anderen.
  • De klasse Object fungeert als root van de overervingshiërarchie in elk Java-programma.

Hier gebruiken wij de toString() En hashCode() methoden van de objectklasse om een ​​aangepaste tekenreeksrepresentatie voor een klasse te bieden .



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

Uitvoer
Person{name:'Geek'} 321001045 

Uitleg: In het bovenstaande voorbeeld overschrijven we de toString() methode om te voorzien in een aangepaste tekenreeksrepresentatie van de klasse Person en gebruik de hashCode() methode om de standaard hashcodewaarde van het object weer te geven.

Objectklasse-methoden

De klasse Object biedt meerdere methoden, die als volgt zijn:

  • toString()-methode
  • hashCode()-methode
  • is gelijk aan(Object obj)-methode
  • finalize() methode
  • getClass()-methode
  • kloon() methode
  • wait() kennisgeving() kennisgevingAll() (Gelijktijdigheidsmethoden)
Objectklassemethoden in Java' title=

1. toString() Methode

De toString() biedt een String-weergave van een object en wordt gebruikt om een ​​object naar een String te converteren. De standaardmethode toString() voor de klasse Object retourneert een tekenreeks die bestaat uit de naam van de klasse waarvan het object een instantie is, het at-teken `@' en de niet-ondertekende hexadecimale representatie van de hashcode van het object.



Opmerking: Telkens wanneer we een objectreferentie proberen af ​​te drukken, wordt de methode toString() intern aangeroepen.

Voorbeeld:

openbare klas Student {



openbare tekenreeks toString() {

retourneer 'Studentenobject';

}

}

Uitleg: De methode toString() wordt overschreven om een ​​aangepaste tekenreeksrepresentatie van het Student-object te retourneren.

2. hashCode()-methode

Voor elk object genereert JVM een uniek nummer, een hashcode. Het retourneert verschillende gehele getallen voor verschillende objecten. Een veel voorkomende misvatting over deze methode is dat de hashCode()-methode het adres van het object retourneert, wat niet correct is. Het converteert het interne adres van het object naar een geheel getal met behulp van een algoritme. De hashCode() methode is oorspronkelijk omdat het in Java onmogelijk is om het adres van een object te vinden, dus gebruikt het native talen zoals C/C++ om het adres van het object te vinden.

Gebruik van de hashCode()-methode:

Het retourneert een hashwaarde die wordt gebruikt om objecten in een verzameling te zoeken. JVM (Java Virtual Machine) gebruikt de hashcode-methode terwijl objecten worden opgeslagen in hash-gerelateerde datastructuren zoals HashSet HashMap Hashtable enz. Het belangrijkste voordeel van het opslaan van objecten op basis van hash-code is dat zoeken eenvoudig wordt. 

Opmerking: Overschrijven van hashCode() De methode moet zo worden uitgevoerd dat we voor elk object een uniek nummer genereren. Voor een studentenklasse kunnen we bijvoorbeeld rolnr. van een student uit de hashCode()-methode, omdat deze uniek is. 

Voorbeeld:

openbare klas Student {

int-rol;

@Overschrijven

openbare int hashCode() {

retourrol;

}

}

Uitleg: De hashCode() methode wordt overschreven om een ​​aangepaste hashwaarde te retourneren op basis van de rol van het Student-object.

3. is gelijk aan(Object obj) Methode

De is gelijk aan() methode vergelijkt het gegeven object met het huidige object. Het wordt aanbevolen deze methode te overschrijven om aangepaste gelijkheidsvoorwaarden te definiëren.

Opmerking: Het is over het algemeen noodzakelijk om de hashCode() methode wanneer deze methode wordt overschreven om het algemene contract voor de hashCode-methode te behouden, waarin staat dat gelijke objecten gelijke hashcodes moeten hebben. 

Voorbeeld:

openbare klas Student {

int-rol;


@Overschrijven

public boolean is gelijk aan (Object o) {

if (o exemplaar van Student) {

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

}

retour vals;

}

}

Uitleg: De is gelijk aan() methode wordt overschreven om te vergelijken rollen tussen twee Student-objecten.

4. getClass()-methode

De getClass() method retourneert het klasseobject van 'dit' object en wordt gebruikt om de daadwerkelijke runtimeklasse van het object te verkrijgen. Het kan ook worden gebruikt om metagegevens van deze klasse op te halen. Het geretourneerde Class-object is het object dat is vergrendeld door statische gesynchroniseerde methoden van de weergegeven klasse. Omdat het definitief is, kunnen we het niet terzijde schuiven.

Voorbeeld:

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

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

Uitleg: De getClass() methode wordt gebruikt om de runtimeklasse van het 'o'-object af te drukken.

Opmerking: Na het laden van een .class-bestand zal JVM een object van het type maken java.lang.Class in het Heap-gebied. We kunnen dit klasseobject gebruiken om informatie op klasseniveau te verkrijgen. Het wordt veel gebruikt bij Reflectie  

5. finalize()-methode

De finaliseren() methode wordt aangeroepen net voordat een object wordt verzameld. Het heet de Afvalverzamelaar op een object wanneer de garbage collector vaststelt dat er geen verwijzingen meer naar het object zijn. We moeten de finalize()-methode negeren om systeembronnen te verwijderen, opruimactiviteiten uit te voeren en geheugenlekken te minimaliseren. Voordat de Servlet-objecten worden vernietigd, wordt de webcontainer bijvoorbeeld altijd de finalize-methode genoemd om opruimactiviteiten van de sessie uit te voeren. 

Opmerking: De finalize-methode heet just eenmaal op een object, ook al komt dat object meerdere keren in aanmerking voor garbagecollection. 

Voorbeeld:

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

Uitvoer
1510467688 end finalize method called 

Uitleg: De finaliseren() methode wordt aangeroepen net voordat het object wordt verzameld.

6. kloon() methode 

De kloon() methode maakt en retourneert een nieuw object dat een kopie is van het huidige object.

Voorbeeld:

public class Boekimplementen Kloonbaar {

privé String t; //titel


openbaar boek(String t) {

dit.t = t;

}

@Overschrijven

public Object clone() gooit CloneNotSupportedException {

retourneer super.kloon();

}

}

Uitleg: De kloon() methode wordt overschreven om een ​​gekloonde kopie van het Boekobject .

7. Concurrency-methoden: wait() kennisgeving() en kennisgevingAll()

Deze methoden zijn gerelateerd aan draad Communicatie in Java . Ze worden gebruikt om threads te laten wachten of om anderen op de hoogte te stellen bij gelijktijdig programmeren.

Voorbeeld van het gebruik van alle Object Class-methoden 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();  } } 

Uitvoer
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 

Uitleg: Het bovenstaande voorbeeld demonstreert het gebruik van toString() is gelijk aan() hashCode() En kloon() methoden in de Boek klasse .