logo

Objectklasse in Java

Voorwerp klas aanwezig is java.lang pakket. Elke klasse in Java is direct of indirect afgeleid van de Voorwerp klas. Als een klasse geen andere klasse uitbreidt, is het een directe onderliggende klasse Voorwerp en als er een andere klasse wordt uitgebreid, wordt deze indirect afgeleid. Daarom zijn de Object-klassemethoden beschikbaar voor alle Java-klassen. Daarom fungeert de objectklasse als een wortel van de overervingshiërarchie in elk Java-programma.

Objectklasse in Java

arrays retourneren in Java

Objectklassemethoden gebruiken

De klasse Object biedt meerdere methoden, die als volgt zijn:



  • toString()-methode
  • hashCode()-methode
  • is gelijk aan(Object obj)-methode
  • finalize() methode
  • getClass()-methode
  • kloon() methode
  • wait(), kennisgeving() kennisgevingAll() methoden

1. toString()-methode

De toString() biedt een String-weergave van een object en wordt gebruikt om een ​​object naar een String te converteren. De standaardmethode toString() voor de klasse Object retourneert een tekenreeks die bestaat uit de naam van de klasse waarvan het object een instantie is, het at-teken `@’ en de niet-ondertekende hexadecimale representatie van de hashcode van het object. Met andere woorden, het wordt gedefinieerd als:

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

Het wordt altijd aanbevolen om de toString() methode om onze eigen String-representatie van Object te krijgen. Voor meer informatie over het overschrijven van de methode toString() raadpleegt u – ToString() overschrijven in Java

Opmerking: Telkens wanneer we een objectreferentie proberen af ​​te drukken, wordt de methode toString() intern aangeroepen.

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

2. hashCode()-methode

Voor elk object genereert JVM een uniek nummer, een hashcode. Het retourneert verschillende gehele getallen voor verschillende objecten. Een veel voorkomende misvatting over deze methode is dat de hashCode()-methode het adres van het object retourneert, wat niet correct is. Het converteert het interne adres van het object naar een geheel getal met behulp van een algoritme. De hashCode() methode is oorspronkelijk omdat het in Java onmogelijk is om het adres van een object te vinden, dus gebruikt het native talen zoals C/C++ om het adres van het object te vinden.

Gebruik van de hashCode()-methode

Het retourneert een hashwaarde die wordt gebruikt om objecten in een verzameling te zoeken. JVM (Java Virtual Machine) gebruikt de hashcode-methode bij het opslaan van objecten in hash-gerelateerde datastructuren zoals HashSet, HashMap, Hashtable, enz. Het belangrijkste voordeel van het opslaan van objecten op basis van hash-code is dat zoeken eenvoudig wordt.

Opmerking: Overschrijven van hashCode() De methode moet zo worden uitgevoerd dat we voor elk object een uniek nummer genereren. Voor een studentenklasse kunnen we bijvoorbeeld het rolnr. van een student uit de hashCode()-methode, omdat deze uniek is.

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

>

>

Uitgang:

Student@64 Student@64>

Merk op dat 4*160+ 6*161= 100

3. is gelijk aan(Object obj)-methode

Het vergelijkt het gegeven object met dit object (het object waarop de methode wordt aangeroepen). Het biedt een algemene manier om objecten op gelijkheid te vergelijken. Het wordt aanbevolen om de is gelijk aan(Objectobject) methode om onze eigen gelijkheidsvoorwaarde voor objecten te verkrijgen. Voor meer informatie over het overschrijven van de methode equals (Object obj) raadpleegt u – Overschrijven is gelijk aan methode in Java

Opmerking: Het is over het algemeen noodzakelijk om de hashCode() methode wanneer deze methode wordt overschreven, om het algemene contract voor de hashCode-methode te behouden, waarin staat dat gelijke objecten gelijke hashcodes moeten hebben.

4. getClass()-methode

Het retourneert het klasseobject van dit object en wordt gebruikt om de daadwerkelijke runtimeklasse van het object te verkrijgen. Het kan ook worden gebruikt om metagegevens van deze klasse op te halen. Het geretourneerde Class-object is het object dat is vergrendeld door statische gesynchroniseerde methoden van de weergegeven klasse. Omdat het definitief is, kunnen we het niet terzijde schuiven.

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

>

>

Uitgang:

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

Opmerking: Na het laden van een .class-bestand zal JVM een object van het type maken java.lang.Class in het Heap-gebied. We kunnen dit klasseobject gebruiken om informatie op klasseniveau te verkrijgen. Het wordt veel gebruikt bij Reflectie

5. finalize()-methode

Deze methode wordt aangeroepen net voordat een object wordt verzameld. Het heet de Vuilnisman op een object wanneer de garbage collector vaststelt dat er geen verwijzingen meer naar het object zijn. We moeten de finalize()-methode negeren om systeembronnen te verwijderen, opruimactiviteiten uit te voeren en geheugenlekken te minimaliseren. Voordat de webcontainer van Servlet-objecten wordt vernietigd, wordt deze bijvoorbeeld altijd de finalize-methode genoemd om opruimactiviteiten van de sessie uit te voeren.

Opmerking: De finalize-methode heet just eenmaal op een object, ook al komt dat object meerdere keren in aanmerking voor garbagecollection.

Java

s in Python




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

>

>

Uitgang:

1510467688 finalize method called end>

6. kloon() methode

Het retourneert een nieuw object dat precies hetzelfde is als dit object. Voor de clone() methode zie Kloon() .

De overige drie methoden wachten() , melden() notificeerAll() zijn gerelateerd aan gelijktijdigheid. Verwijzen naar Communicatie tussen threads in Java voor details.

Voorbeeld van het gebruik van alle Object-klassemethoden in Java

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

Harald Baldr

>

>

Uitvoer

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>