Objektklass i Java

Objektklass i Java

Objektklass i Java finns i java.lang paket.

  • Varje klass är direkt eller indirekt härledd från klassen Object. Om en klass inte utökar någon annan klass är det en direkt underordnad klass till Java Object klass och om den utökar en annan klass så är den indirekt härledd.
  • Objektklassen tillhandahåller flera metoder som t.ex toString() är lika med() hashCode() och många andra.
  • Objektklassen fungerar som en rot till arvshierarkin i alla Java-program.

Här använder vi toString() och hashCode() metoder i objektklassen för att tillhandahålla en anpassad strängrepresentation för en klass .

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

Produktion
Person{name:'Geek'} 321001045  

Förklaring: I exemplet ovan åsidosätter vi toString() metod för att tillhandahålla en anpassad strängrepresentation av klassen Person och använda hashCode() metod för att visa objektets standardhashkodvärde.

Objektklassmetoder

Objektklassen tillhandahåller flera metoder som är följande:

  • toString()-metoden
  • hashCode() metod
  • equals(Object obj) metod
  • finalize() metod
  • getClass() metod
  • clone() metod
  • wait() notify() notifyAll() (Samtidighetsmetoder)
Objektklassmetoder i Java

1. toString()-metod

De toString() tillhandahåller en strängrepresentation av ett objekt och används för att konvertera ett objekt till en sträng. Standardmetoden toString() för klassen Object returnerar en sträng som består av namnet på den klass som objektet är en instans av, at-tecknet "@" och den osignerade hexadecimala representationen av objektets hash-kod.

Notera: När vi försöker skriva ut någon objektreferens anropas internt toString()-metoden.

Exempel:

offentlig klass Student {

public String toString() {

returnera 'Studentobjekt';

}

}

Förklaring: Metoden toString() åsidosätts för att returnera en anpassad strängrepresentation av Student-objektet.

2. hashCode() Metod

För varje objekt genererar JVM ett unikt nummer som är en hashkod. Den returnerar distinkta heltal för distinkta objekt. En vanlig missuppfattning om denna metod är att metoden hashCode() returnerar adressen till objektet som inte är korrekt. Den konverterar objektets interna adress till ett heltal genom att använda en algoritm. Metoden hashCode() är inföding eftersom det i Java är omöjligt att hitta adressen till ett objekt så det använder inhemska språk som C/C++ för att hitta adressen till objektet.

Användning av hashCode()-metoden:

Den returnerar ett hashvärde som används för att söka efter objekt i en samling. JVM (Java Virtual Machine) använder hashkodmetoden samtidigt som objekt sparas i hashrelaterade datastrukturer som HashSet HashMap Hashtable etc. Den största fördelen med att spara objekt baserat på hashkod är att sökningen blir enkel. 

Notera: Åsidosättande av hashCode() Metoden måste göras så att för varje objekt genererar vi ett unikt nummer. Till exempel för en studentklass kan vi returnera rullnr. av en student från hashCode()-metoden eftersom den är unik. 

Exempel:

offentlig klass Student {

int rulle;

@Åsidosätta

public int hashCode() {

returrulle;

}

}

Förklaring: De hashCode() metoden åsidosätts för att returnera ett anpassat hashvärde baserat på rullen för Student-objektet.

3. equals(Object obj) Metod

De lika() metod jämför det givna objektet med det aktuella objektet. Det rekommenderas att åsidosätta denna metod för att definiera anpassade jämställdhetsvillkor.

Notera: Det är i allmänhet nödvändigt att åsidosätta hashCode() metod närhelst denna metod åsidosätts för att bibehålla det allmänna kontraktet för hashCode-metoden som säger att lika objekt måste ha lika hashkoder. 

Exempel:

offentlig klass Student {

int rulle;


@Åsidosätta

public boolean equals(Object o) {

if (o instans av Student) {

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

}

returnera falskt;

}

}

Förklaring: De lika() metoden åsidosätts för att jämföra rulla mellan två studentobjekt.

4. getClass() metod

De getClass() metod returnerar klassobjektet för "detta" objekt och används för att få den faktiska körtidsklassen för objektet. Den kan också användas för att hämta metadata för denna klass. Det returnerade Class-objektet är objektet som är låst med statiska synkroniserade metoder för den representerade klassen. Eftersom det är slutgiltigt så åsidosätter vi det inte.

Exempel:

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

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

Förklaring: De getClass() metod används för att skriva ut runtime-klassen för objektet 'o'.

Notera: Efter att ha laddat en .class-fil kommer JVM att skapa ett objekt av typen java.lang.Class i Heap-området. Vi kan använda detta klassobjekt för att få information på klassnivå. Det används flitigt i Reflexion  

5. finalize() metod

De avsluta() metoden anropas precis innan ett objekt samlas in som skräp. Det kallas för Sophämtare på ett föremål när sopsamlaren fastställer att det inte finns några fler referenser till föremålet. Vi bör åsidosätta finalize()-metoden för att göra oss av med systemresurser och utföra rensningsaktiviteter och minimera minnesläckor. Till exempel innan du förstör Servlet-objektens webbbehållare kallas alltid slutföringsmetoden för att utföra rensningsaktiviteter för sessionen. 

Notera: Slutföringsmetoden kallas just en gång på ett objekt även om det objektet är berättigat till sophämtning flera gånger. 

Exempel:

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

Produktion
1510467688 end finalize method called  

Förklaring: De avsluta() metoden anropas precis innan objektet samlas in som skräp.

6. clone() metod 

De klona() metod skapar och returnerar ett nytt objekt som är en kopia av det aktuella objektet.

Exempel:

public class Bok implementerar Cloneable {

privat String t; //titel


public Book(String t) {

detta.t = t;

}

@Åsidosätta

public Object clone() kastar CloneNotSupportedException {

returnera super.clone();

}

}

Förklaring: De klona() metoden åsidosätts för att returnera en klonad kopia av Bokobjekt .

7. Samtidighetsmetoder: wait() notify() och notifyAll()

Dessa metoder är relaterade till tråd Kommunikation i Java . De används för att få trådar att vänta eller meddela andra i samtidig programmering.

Exempel på användning av alla objektklassmetoder i 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  ();      }   }   

Produktion
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  

Förklaring: Ovanstående exempel visar användningen av toString() är lika med() hashCode() och klona() metoder i Bokklass .