logo

Objektklasse i Java

Objektklasse i Java er tilstede i java.lang pakke.

strengformater
  • Hver klasse er direkte eller indirekte avledet fra Object-klassen. Hvis en klasse ikke utvider noen annen klasse, er det en direkte barneklasse av Java Object klasse og hvis den utvider en annen klasse, er den indirekte avledet.
  • Object-klassen gir flere metoder som f.eks toString() er lik() hashkode() og mange andre.
  • Objektklassen fungerer som en rot av arvehierarkiet i et hvilket som helst Java-program.

Her bruker vi toString() og hashkode() metoder for objektklassen å gi en egendefinert strengrepresentasjon for en klasse .



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

Produksjon
Person{name:'Geek'} 321001045 

Forklaring: I eksemplet ovenfor overstyrer vi toString() metode for å gi en tilpasset strengrepresentasjon av Person-klassen og bruk hashkode() metode for å vise standard hash-kodeverdi for objektet.

Objektklassemetoder

Objektklassen gir flere metoder som er som følger:

  • toString()-metoden
  • hashCode()-metoden
  • lik (Objekt obj) metode
  • finalize() metode
  • getClass()-metoden
  • clone() metode
  • wait() notify() notifyAll() (Samtidighetsmetoder)
Objektklassemetoder i Java' title=

1. toString()-metoden

De toString() gir en strengrepresentasjon av et objekt og brukes til å konvertere et objekt til en streng. Standard toString()-metoden for klassen Object returnerer en streng som består av navnet på klassen som objektet er en forekomst av, at-tegnet tegnet `@' og den usignerte heksadesimale representasjonen av hash-koden til objektet.



Note: Hver gang vi prøver å skrive ut en objektreferanse, kalles internt toString()-metoden.

Eksempel:

offentlig klasse Student {



public String toString() {

returner 'Studentobjekt';

}

}

Forklaring: Metoden toString() overstyres for å returnere en egendefinert strengrepresentasjon av Student-objektet.

2. hashCode() Metode

For hvert objekt genererer JVM et unikt nummer som er en hashkode. Den returnerer distinkte heltall for distinkte objekter. En vanlig misforståelse om denne metoden er at hashCode()-metoden returnerer adressen til objektet som ikke er riktig. Den konverterer den interne adressen til objektet til et heltall ved å bruke en algoritme. Metoden hashCode() er innfødt fordi i Java er det umulig å finne adressen til et objekt, så det bruker morsmål som C/C++ for å finne adressen til objektet.

Bruk av hashCode()-metoden:

Den returnerer en hash-verdi som brukes til å søke i objekter i en samling. JVM (Java Virtual Machine) bruker hashkode-metoden mens du lagrer objekter i hashing-relaterte datastrukturer som HashSet HashMap Hashtable etc. Hovedfordelen med å lagre objekter basert på hash-kode er at det blir enkelt å søke. 

Note: Overstyring av hashkode() metoden må gjøres slik at for hvert objekt genererer vi et unikt tall. For eksempel for en studentklasse kan vi returnere rullenr. av en student fra hashCode()-metoden siden den er unik. 

Eksempel:

offentlig klasse Student {

int rulle;

@Overstyr

public int hashCode() {

rulle tilbake;

}

}

Forklaring: De hashkode() metoden overstyres for å returnere en egendefinert hash-verdi basert på rullen til Student-objektet.

3. lik(Objekt obj) Metode

De lik() metoden sammenligner det gitte objektet med det gjeldende objektet. Det anbefales å overstyre denne metoden for å definere tilpassede likhetsbetingelser.

Note: Det er generelt nødvendig å overstyre hashkode() metode når denne metoden overstyres for å opprettholde den generelle kontrakten for hashCode-metoden som sier at like objekter må ha like hash-koder. 

Eksempel:

offentlig klasse Student {

int rulle;


@Overstyr

offentlig boolsk lik(Objekt o) {

if (o instans av student) {

returnere denne.rulle == ((Student) o).rulle;

}

returner falsk;

}

}

Forklaring: De lik() metoden overstyres for å sammenligne rulle mellom to studentobjekter.

4. getClass()-metoden

De getClass() metoden returnerer klasseobjektet til 'dette' objektet og brukes til å få den faktiske kjøretidsklassen til objektet. Den kan også brukes til å hente metadata for denne klassen. Det returnerte klasseobjektet er objektet som er låst av statiske synkroniserte metoder for den representerte klassen. Siden den er endelig, så overstyrer vi den ikke.

Eksempel:

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

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

Forklaring: De getClass() metoden brukes til å skrive ut kjøretidsklassen til 'o'-objektet.

Note: Etter å ha lastet en .class-fil vil JVM opprette et objekt av typen java.lang.Klasse i Heap-området. Vi kan bruke dette klasseobjektet for å få informasjon på klassenivå. Det er mye brukt i Speilbilde  

5. finalize() metode

De fullføre() metoden kalles rett før en gjenstand samles inn som søppel. Det kalles Søppelsamler på en gjenstand når søppelsamleren fastslår at det ikke er flere referanser til gjenstanden. Vi bør overstyre finalize()-metoden for å disponere systemressurser, utføre oppryddingsaktiviteter og minimere minnelekkasjer. For eksempel før ødeleggelse av Servlet-objekter nettcontainer alltid kalt finalize-metoden for å utføre oppryddingsaktiviteter i økten. 

Note: Finaliseringsmetoden kalles bare en gang på en gjenstand selv om den gjenstanden er kvalifisert for søppelhenting flere ganger. 

Eksempel:

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

Produksjon
1510467688 end finalize method called 

Forklaring: De fullføre() metoden kalles rett før objektet samles opp.

6. klone() metode 

De klone() metoden oppretter og returnerer et nytt objekt som er en kopi av det gjeldende objektet.

Eksempel:

public class Book implementerer Cloneable {

privat String t; //tittel


offentlig bok(streng t) {

dette.t = t;

}

@Overstyr

public Object clone() kaster CloneNotSupportedException {

returner super.clone();

}

}

Forklaring: De klone() metoden overstyres for å returnere en klonet kopi av Bokobjekt .

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

Disse metodene er relatert til tråd Kommunikasjon i Java . De brukes til å få tråder til å vente eller varsle andre i samtidig programmering.

Eksempel på bruk av alle objektklassemetodene 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();  } } 

Produksjon
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 

Forklaring: Eksemplet ovenfor demonstrerer bruken av toString() lik() hashCode() og klone() metoder i Bokklasse .