logo

Objektklass i Java

Objekt klass finns i java.lang paket. Varje klass i Java är direkt eller indirekt härledd från Objekt klass. Om en klass inte utökar någon annan klass är det en direkt underordnad klass av Objekt och om den utökar en annan klass så är den indirekt härledd. Därför är Object-klassmetoderna tillgängliga för alla Java-klasser. Därför fungerar objektklassen som en rot till arvshierarkin i vilket Java-program som helst.

Objektklass i Java

Använda 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() metoder

1. toString()-metoden

toString() tillhandahåller en String-representation av ett objekt och används för att konvertera ett objekt till en String. Standardmetoden toString() för klassen Object returnerar en sträng som består av namnet på klassen som objektet är en instans av, at-tecknet @ och den osignerade hexadecimala representationen av objektets hash-kod. Med andra ord definieras det 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 rekommenderas alltid att åsidosätta att stränga() metod för att få vår egen strängrepresentation av objekt. För mer om åsidosättande av toString()-metoden se – Åsidosätter toString() i Java

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

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

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, vilket 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 man sparar objekt 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 hash-kod() Metoden måste göras så att vi för varje objekt genererar ett unikt nummer. Till exempel, för en studentklass, kan vi returnera rullnr. av en elev från metoden hashCode() eftersom den är unik.

Java




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

>

>

vad är en stack i java

Utgång:

Student@64 Student@64>

Observera att 4*160+ 6*161= 100

3. equals(Object obj) metod

Den jämför det givna objektet med detta objekt (objektet som metoden anropas på). Det ger ett generiskt sätt att jämföra objekt för jämlikhet. Det rekommenderas att åsidosätta lika (Objekt objekt) metod för att få vårt eget jämlikhetsvillkor på Objekt. För mer om metoden åsidosättande av lika (Object obj) se – Åsidosättande är lika med metod i Java

Notera: Det är i allmänhet nödvändigt att åsidosätta hash-kod() 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.

4. getClass() metod

Den 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.

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>

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

Denna metod kallas precis innan ett föremål samlas in. Det kallas Skräp samlare 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, utföra rensningsaktiviteter och minimera minnesläckor. Till exempel, innan du förstör Servlet-objektens webbbehållare, alltid kallad slutföringsmetod 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.

Java

musrullning fungerar inte




// 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() metod

Det returnerar ett nytt objekt som är exakt samma som detta objekt. Se metoden clone() Klona() .

De återstående tre metoderna vänta() , meddela() notifyAll() är relaterade till samtidighet. Hänvisa till Kommunikation mellan trådar i Java för detaljer.

Exempel på användning av alla Object class-metoder i Java

Java


chown kommando



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>