logo

Objektiluokka Javassa

Objektiluokka Javassa on läsnä java.lang paketti.

roomalaiset numerot kaavio 1 100
  • Jokainen luokka on suoraan tai epäsuorasti johdettu Object-luokasta. Jos luokka ei laajenna mitään muuta luokkaa, se on ryhmän suora aliluokka Java-objektiluokka ja jos se laajentaa toista luokkaa, se on epäsuorasti johdettu.
  • Object-luokka tarjoaa useita menetelmiä, kuten toString()equals() hashCode() ja monet muut.
  • Object-luokka toimii perintöhierarkian juurena kaikissa Java-ohjelmissa.

Tässä käytämme toString() ja hashCode() Object-luokan menetelmät tarjota mukautettu merkkijonoesitys luokalle .



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

Lähtö
Person{name:'Geek'} 321001045 

Selitys: Yllä olevassa esimerkissä ohitamme toString() tapa tarjota a Person-luokan mukautettu merkkijonoesitys ja käytä hashCode() menetelmä objektin oletushajakoodiarvon näyttämiseksi.

Objektiluokan menetelmät

Object-luokka tarjoaa useita menetelmiä, jotka ovat seuraavat:

  • toString()-metodi
  • hashCode() -menetelmä
  • equals(Object obj) -metodi
  • finalize() -menetelmä
  • getClass() -menetelmä
  • klooni() -menetelmä
  • odota() notify() notifyAll() (Samanaikaisuusmenetelmät)
Object Class Methods Javassa' title=

1. toString()-menetelmä

The toString() tarjoaa objektin merkkijonoesityksen ja sitä käytetään muuntamaan objekti merkkijonoksi. Luokan Object oletusmenetelmä toString() palauttaa merkkijonon, joka koostuu sen luokan nimestä, jonka esiintymä objekti on, at-merkkimerkistä `@' ja objektin hajakoodin etumerkittömästä heksadesimaalimuodosta.



Huomautus: Aina kun yritämme tulostaa minkä tahansa objektiviittauksen, kutsutaan sisäisesti toString()-menetelmää.

Esimerkki:

julkinen luokka Opiskelija {



public String toString() {

return 'Opiskelijaobjekti';

}

}

Selitys: ToString()-metodi ohitetaan palauttamaan Student-objektin mukautettu merkkijonoesitys.

2. hashCode() -menetelmä

Jokaiselle objektille JVM luo yksilöllisen numeron, joka on hashcode. Se palauttaa erilliset kokonaisluvut erillisille objekteille. Yleinen väärinkäsitys tästä menetelmästä on, että hashCode()-metodi palauttaa kohteen osoitteen, joka ei ole oikea. Se muuntaa objektin sisäisen osoitteen kokonaisluvuksi algoritmin avulla. HashCode()-menetelmä on syntyperäinen koska Javassa on mahdotonta löytää objektin osoitetta, joten se käyttää alkuperäisiä kieliä, kuten C/C++, löytääkseen objektin osoitteen.

HashCode()-menetelmän käyttö:

Se palauttaa hash-arvon, jota käytetään kokoelman kohteiden etsimiseen. JVM (Java Virtual Machine) käyttää hashcode-menetelmää tallentaessaan objekteja tiivistykseen liittyviin tietorakenteisiin, kuten HashSet HashMap Hashtable jne. Hash-koodiin perustuvien objektien tallentamisen tärkein etu on, että hausta tulee helppoa. 

Huomautus: Ohitus hashCode() menetelmä on tehtävä siten, että jokaiselle objektille luodaan yksilöllinen numero. Esimerkiksi opiskelijaluokalle voimme palauttaa rullan nro. opiskelijan hashCode()-menetelmästä, koska se on ainutlaatuinen. 

Esimerkki:

julkinen luokka Opiskelija {

int roll;

@Ohittaa

public int hashCode() {

paluurulla;

}

}

Selitys: The hashCode() menetelmä ohitetaan palauttamaan mukautettu hash-arvo Student-objektin rullauksen perusteella.

3. on yhtä kuin (Object obj) Method

The on yhtä suuri () menetelmä vertaa annettua objektia nykyiseen objektiin. On suositeltavaa ohittaa tämä menetelmä mukautettujen tasa-arvoehtojen määrittämiseksi.

Huomautus: Yleensä on välttämätöntä ohittaa hashCode() -menetelmää aina, kun tämä menetelmä ohitetaan, jotta säilytetään yleissopimus hashCode-metodille, jonka mukaan samoilla objekteilla on oltava samat hash-koodit. 

Esimerkki:

julkinen luokka Opiskelija {

int roll;


@Ohittaa

julkinen boolean on yhtä kuin(Object o) {

if (o instanceof Student) {

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

}

palauttaa väärä;

}

}

Selitys: The on yhtä suuri () menetelmä ohitetaan vertailtaessa rullaa kahden opiskelijaobjektin välillä.

4. getClass()-metodi

The getClass() menetelmä palauttaa 'tämän' objektin luokkaobjektin ja sitä käytetään saamaan objektin todellinen ajonaikainen luokka. Sitä voidaan käyttää myös tämän luokan metatietojen hankkimiseen. Palautettu luokkaobjekti on objekti, joka on lukittu esitetyn luokan staattisilla synkronoiduilla menetelmillä. Koska se on lopullinen, emme ohita sitä.

Esimerkki:

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

Lähtö
Class of Object o is: java.lang.String 

Selitys: The getClass() menetelmää käytetään o-objektin ajonaikaisen luokan tulostamiseen.

Huomautus: .class-tiedoston lataamisen jälkeen JVM luo tyyppisen objektin java.lang.Class Kasan alueella. Voimme käyttää tätä luokkaobjektia luokkatason tietojen saamiseksi. Sitä käytetään laajasti Heijastus  

5. finalize()-menetelmä

The viimeistellä () menetelmää kutsutaan juuri ennen kuin objekti kerätään roskat. Sitä kutsutaan nimellä Roskien kerääjä objektissa, kun roskankerääjä toteaa, ettei objektiin ole enää viittauksia. Meidän tulee ohittaa finalize()-menetelmä, jotta järjestelmäresurssit voidaan hävittää, jotta voimme suorittaa puhdistustoimia ja minimoida muistivuotoja. Esimerkiksi ennen Servlet-objektien verkkosäiliön tuhoamista kutsutaan aina finalize-menetelmäksi istunnon puhdistustoimintojen suorittamiseksi. 

Huomautus: Viimeistelymenetelmää kutsutaan vain kerran objektiin, vaikka se olisi kelvollinen roskienkeräykseen useita kertoja. 

Esimerkki:

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

Lähtö
1510467688 end finalize method called 

Selitys: The viimeistellä () menetelmää kutsutaan juuri ennen kuin objekti kerätään roskat.

6. clone()-menetelmä 

The klooni() menetelmä luo ja palauttaa uuden objektin, joka on kopio nykyisestä objektista.

Esimerkki:

public class Kirjatyökalut Kloonattava {

yksityinen merkkijono; //otsikko


julkinen kirja(merkkijono t) {

this.t = t;

}

@Ohittaa

public Object clone() heittää CloneNotSupportedException {

return super.clone();

}

}

Selitys: The klooni() -menetelmä ohitetaan palauttamaan kloonattu kopio Kirja esine .

7. Samanaikaisuusmenetelmät: odota() notify() ja notifyAll()

Nämä menetelmät liittyvät viestiketju Javassa . Niitä käytetään saamaan säikeet odottamaan tai ilmoittamaan muille samanaikaisessa ohjelmoinnissa.

Esimerkki kaikkien objektiluokkamenetelmien käytöstä Javassa

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

Lähtö
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 

Selitys: Yllä oleva esimerkki osoittaa käytön toString() equals() hashCode() ja klooni() menetelmät Kirja luokka .