logo

Objektklasse i Java

Objekt klasse er til stede i java.lang pakke. Hver klasse i Java er direkte eller indirekte afledt af Objekt klasse. Hvis en klasse ikke udvider nogen anden klasse, er det en direkte underordnet klasse af Objekt og hvis udvider en anden klasse, så er den indirekte afledt. Derfor er Object class-metoderne tilgængelige for alle Java-klasser. Derfor fungerer Objektklassen som en rod til arvehierarkiet i ethvert Java-program.

Objektklasse i Java

Brug af objektklassemetoder

Object-klassen giver flere metoder, som er som følger:



  • toString() metode
  • hashCode() metode
  • equals(Object obj) metode
  • finalize() metode
  • getClass() metode
  • clone() metode
  • wait(), notify() notifyAll() metoder

1. toString() metode

toString() giver en String-repræsentation af et objekt og bruges til at konvertere et objekt til en String. Standardmetoden toString() for klassen Object returnerer en streng bestående af navnet på den klasse, som objektet er en instans af, at-tegnet tegnet `@' og den usignerede hexadecimale repræsentation af objektets hash-kode. Det er med andre ord defineret som:

// Default behavior of toString() is to print class name, then // @, then unsigned hexadecimal representation of the hash code // of the object  public String toString() {  return getClass().getName() + '@' + Integer.toHexString(hashCode()); }>

Det anbefales altid at tilsidesætte toString() metode til at få vores egen String-repræsentation af objektet. For mere om tilsidesættelse af toString()-metoden se – Tilsidesættelse af toString() i Java

Bemærk: Hver gang vi forsøger at udskrive en objektreference, kaldes internt toString()-metoden.

Student s = new Student();  // Below two statements are equivalent System.out.println(s); System.out.println(s.toString());>

2. hashCode() metode

For hvert objekt genererer JVM et unikt nummer, som er en hashkode. Det returnerer distinkte heltal for distinkte objekter. En almindelig misforståelse om denne metode er, at hashCode()-metoden returnerer adressen på objektet, hvilket ikke er korrekt. Den konverterer objektets interne adresse til et heltal ved hjælp af en algoritme. hashCode() metoden er hjemmehørende fordi det i Java er umuligt at finde adressen på et objekt, så det bruger indfødte sprog som C/C++ til at finde adressen på objektet.

Brug af hashCode() metode

Det returnerer en hashværdi, der bruges til at søge efter objekter i en samling. JVM (Java Virtual Machine) bruger hashcode-metoden, mens objekter gemmes i hashing-relaterede datastrukturer som HashSet, HashMap, Hashtable osv. Den største fordel ved at gemme objekter baseret på hash-kode er, at søgning bliver let.

Bemærk: Tilsidesættelse af hashCode() metode skal gøres sådan, at vi for hvert objekt genererer et unikt tal. For eksempel kan vi for en elevklasse returnere rullenr. af en elev fra hashCode()-metoden, da den er unik.

Java


round robin planlægningsalgoritme



// Java program to demonstrate working of> // hashCode() and toString()> public> class> Student {> >static> int> last_roll =>100>;> >int> roll_no;> >// Constructor> >Student()> >{> >roll_no = last_roll;> >last_roll++;> >}> >// Overriding hashCode()> >@Override> public> int> hashCode() {>return> roll_no; }> >// Driver code> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> >// Below two statements are equivalent> >System.out.println(s);> >System.out.println(s.toString());> >}> }>

>

>

Output:

Student@64 Student@64>

Bemærk at 4*160+ 6*161= 100

liste som array

3. equals(Object obj) metode

Den sammenligner det givne objekt med dette objekt (det objekt, som metoden kaldes på). Det giver en generisk måde at sammenligne objekter for lighed. Det anbefales at tilsidesætte er lig med (Objekt obj) metode til at få vores egen lighedsbetingelse på Objekter. For mere om tilsidesættelse af lig (Object obj) metode se – Tilsidesættelse er lig med metode i Java

Bemærk: Det er generelt nødvendigt at tilsidesætte hashCode() metode, når denne metode tilsidesættes, for at opretholde den generelle kontrakt for hashCode-metoden, som siger, at lige objekter skal have lige hash-koder.

4. getClass() metode

Det returnerer klasseobjektet for dette objekt og bruges til at få den faktiske runtime-klasse for objektet. Det kan også bruges til at hente metadata for denne klasse. Det returnerede klasseobjekt er det objekt, der er låst af statisk synkroniserede metoder af den repræsenterede klasse. Da det er endeligt, så tilsidesætter vi det ikke.

Java




// Java program to demonstrate working of getClass()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Object obj =>new> String(>'GeeksForGeeks'>);> >Class c = obj.getClass();> >System.out.println(>'Class of Object obj is : '> >+ c.getName());> >}> }>

>

>

Produktion:

Class of Object obj is : java.lang.String>

Bemærk: Efter indlæsning af en .class-fil, vil JVM oprette et objekt af typen java.lang.Klasse i Heap-området. Vi kan bruge dette klasseobjekt til at få oplysninger på klasseniveau. Det er meget brugt i Afspejling

5. finalize() metode

Denne metode kaldes lige før en genstand opsamles affald. Det kaldes Skraldemand på en genstand, når skraldemanden fastslår, at der ikke er flere referencer til objektet. Vi bør tilsidesætte finalize()-metoden for at bortskaffe systemressourcer, udføre oprydningsaktiviteter og minimere hukommelseslækager. For eksempel, før ødelæggelse af Servlet-objekters webcontainer, altid kaldet færdiggørelsesmetode til at udføre oprydningsaktiviteter i sessionen.

Bemærk: Finaliseringsmetoden kaldes bare enkelt gang på en genstand, selvom den pågældende genstand er berettiget til affaldsindsamling flere gange.

Java


rekha indisk



// Java program to demonstrate working of finalize()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Test t =>new> Test();> >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 finalize method called end>

6. clone() metode

Det returnerer et nyt objekt, der er nøjagtigt det samme som dette objekt. Se clone()-metoden Klon() .

De resterende tre metoder vente() , underrette() notifyAll() er relateret til samtidighed. Henvise til Inter-thread kommunikation i Java for detaljer.

Eksempel på brug af alle Object class metoder i Java

git pull origin master

Java




import> java.io.*;> public> class> Book>implements> Cloneable {> >private> String title;> >private> String author;> >private> int> year;> >public> Book(String title, String author,>int> year)> >{> >this>.title = title;> >this>.author = author;> >this>.year = year;> >}> >// Override the toString method> >@Override> public> String toString()> >{> >return> title +>' by '> + author +>' ('> + year +>')'>;> >}> >// Override the equals method> >@Override> public> boolean> equals(Object obj)> >{> >if> (obj ==>null> || !(obj>instanceof> Book)) {> >return> false>;> >}> >Book other = (Book)obj;> >return> this>.title.equals(other.getTitle())> >&&>this>.author.equals(other.getAuthor())> >&&>this>.year == other.getYear();> >}> >// Override the hashCode method> >@Override> public> int> hashCode()> >{> >int> result =>17>;> >result =>31> * result + title.hashCode();> >result =>31> * result + author.hashCode();> >result =>31> * result + year;> >return> result;> >}> >// 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> title; }> >public> String getAuthor() {>return> author; }> >public> int> getYear() {>return> year; }> >public> static> void> main(String[] args)> >{> >// Create a Book object and print its details> >Book book1 =>new> Book(> >'The Hitchhiker's Guide to the Galaxy'>,> >'Douglas Adams'>,>1979>);> >System.out.println(book1);> >// Create a clone of the Book object and print its> >// details> >Book book2 = book1.clone();> >System.out.println(book2);> >// Check if the two objects are equal> >System.out.println(>'book1 equals book2: '> >+ book1.equals(book2));> >// Get the hash code of the two objects> >System.out.println(>'book1 hash code: '> >+ book1.hashCode());> >System.out.println(>'book2 hash code: '> >+ book2.hashCode());> >// Set book1 to null to trigger garbage collection> >// and finalize method> >book1 =>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) book1 equals book2: true book1 hash code: 1840214527 book2 hash code: 1840214527>