Klasa obiektu w Javie jest obecny w java.lang pakiet.
konstruktory w Javie
- Każda klasa wywodzi się bezpośrednio lub pośrednio z klasy Object. Jeśli klasa nie rozszerza żadnej innej klasy, jest to bezpośrednia klasa potomna Klasa obiektu Java a jeśli rozszerza inną klasę, to jest pośrednio wyprowadzona.
- Klasa Object udostępnia kilka metod, takich jak toString() równa się() hashCode() i wiele innych.
- Klasa Object pełni rolę korzenia hierarchii dziedziczenia w dowolnym programie Java.
Tutaj używamy doString() I hashCode() metody klasy Object aby zapewnić niestandardową reprezentację ciągu dla klasy .
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()); } }
Wyjście
Person{name:'Geek'} 321001045 Wyjaśnienie: W powyższym przykładzie nadpisujemy doString() metoda zapewnienia a niestandardowa reprezentacja ciągu klasy Person i skorzystaj z hashCode() metoda wyświetlania domyślnej wartości kodu skrótu obiektu.
Metody klas obiektów
Klasa Object udostępnia wiele metod, które są następujące:
- metoda toString().
- metoda hashCode().
- metoda równa się (obiekt obiektu).
- metoda finalizacji().
- metodę getClass().
- metoda klonowania().
- wait() notify() notifyAll() (Metody współbieżności)

1. Metoda toString().
The doString() zapewnia ciąg znaków reprezentujący obiekt i służy do konwersji obiektu na ciąg. Domyślna metoda toString() dla klasy Obiekt zwraca ciąg składający się z nazwy klasy, której instancją jest obiekt, znaku at `@' i szesnastkowej reprezentacji kodu skrótu obiektu bez znaku.
Notatka: Za każdym razem, gdy próbujemy wydrukować dowolne odwołanie do obiektu, wywoływana jest wewnętrznie metoda toString().
Przykład:
klasa publiczna Student {
publiczny ciąg toString() {
zwróć „Obiekt ucznia”;
}
}
Wyjaśnienie: Metoda toString() została zastąpiona w celu zwrócenia niestandardowej reprezentacji ciągu obiektu Studenta w postaci ciągu znaków.
2. Metoda hashCode().
Dla każdego obiektu JVM generuje unikalny numer będący hashcodem. Zwraca różne liczby całkowite dla różnych obiektów. Powszechnym błędnym przekonaniem na temat tej metody jest to, że metoda hashCode() zwraca adres obiektu, który jest nieprawidłowy. Konwertuje wewnętrzny adres obiektu na liczbę całkowitą za pomocą algorytmu. Metoda hashCode() to rodzinny ponieważ w Javie nie można znaleźć adresu obiektu, dlatego do znalezienia adresu obiektu używa się języków rodzimych, takich jak C/C++.
Zastosowanie metody hashCode():
Zwraca wartość skrótu, która jest używana do wyszukiwania obiektów w kolekcji. JVM (Java Virtual Machine) wykorzystuje metodę hashcode podczas zapisywania obiektów w strukturach danych związanych z hashowaniem, takich jak HashSet HashMap Hashtable itp. Główną zaletą zapisywania obiektów w oparciu o kod skrótu jest to, że wyszukiwanie staje się łatwe.
Notatka: Zastąpienie hashCode() metodę należy wykonać w taki sposób, aby dla każdego obiektu wygenerować unikalny numer. Przykładowo dla klasy Student możemy zwrócić rolkę nr. ucznia z metody hashCode(), ponieważ jest ona unikalna.
Przykład:
klasa publiczna Student {
int rolka;
@Prześcigać
publiczny int hashCode() {
rolka zwrotna;
}
}
Wyjaśnienie: The hashCode() metoda jest zastępowana, aby zwrócić niestandardową wartość skrótu na podstawie wyniku obiektu Studenta.
3. Metoda równa się (obiekt obiektu).
The równa się() metoda porównuje dany obiekt z obiektem bieżącym. Zaleca się zastąpienie tej metody w celu zdefiniowania niestandardowych warunków równości.
Notatka: Ogólnie rzecz biorąc, konieczne jest zastąpienie hashCode() method za każdym razem, gdy ta metoda zostanie zastąpiona, aby zachować ogólną umowę dla metody hashCode, która stwierdza, że równe obiekty muszą mieć takie same kody skrótu.
Przykład:
klasa publiczna Student {
int rolka;
@Prześcigać
publiczna wartość logiczna równa się (obiekt o) {
if (o instancja Studenta) {
zwróć to.roll == ((Student) o).roll;
}
zwróć fałsz;
}
}
Wyjaśnienie: The równa się() metoda jest zastępowana w celu porównania rolka pomiędzy dwoma obiektami Studenta.
4. Metoda getClass().
The pobierzKlasę() metoda zwraca obiekt klasy „tego” obiektu i służy do uzyskania rzeczywistej klasy środowiska wykonawczego obiektu. Można go również użyć do uzyskania metadanych tej klasy. Zwrócony obiekt klasy to obiekt zablokowany przez statyczne, zsynchronizowane metody reprezentowanej klasy. Ponieważ jest to ostateczne, nie możemy go zastępować.
Przykład:
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()); } }
Wyjście
Class of Object o is: java.lang.String
Wyjaśnienie: The pobierzKlasę() Metoda służy do wydrukowania klasy wykonawczej obiektu „o”.
Notatka: Po załadowaniu pliku .class JVM utworzy obiekt tego typu Java.lang.Class w obszarze Kopca. Możemy użyć tego obiektu klasy, aby uzyskać informacje na poziomie klasy. Jest szeroko stosowany w Odbicie
5. metoda finalize().
The sfinalizować() Metoda jest wywoływana tuż przed wyrzuceniem obiektu ze śmieci. Nazywa się to Zbieracz śmieci na obiekcie, gdy moduł zbierający elementy bezużyteczne ustali, że nie ma już żadnych odniesień do obiektu. Powinniśmy zastąpić metodę finalize(), aby pozbyć się zasobów systemowych, wykonać czynności porządkowe i zminimalizować wycieki pamięci. Na przykład przed zniszczeniem kontenera WWW obiektów serwletu zawsze wywoływana jest metoda finalizacji w celu wykonania czynności czyszczących sesję.
Notatka: Metoda finalizacji nazywa się just raz na obiekcie, mimo że obiekt ten kwalifikuje się do wielokrotnego usuwania elementów bezużytecznych.
Przykład:
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'); } }
Wyjście
1510467688 end finalize method called
Wyjaśnienie: The sfinalizować() metoda jest wywoływana tuż przed usunięciem obiektu ze śmieci.
6. metoda clone().
The klon() metoda tworzy i zwraca nowy obiekt będący kopią bieżącego obiektu.
Przykład:
klasa publiczna Książka implementuje Cloneable {
prywatny Ciąg t; //tytuł
książka publiczna(String t) {
to.t = t;
}
@Prześcigać
obiekt publiczny clone() zgłasza wyjątek CloneNotSupportedException {
zwróć super.clone();
}
}
Wyjaśnienie: The klon() metoda jest zastępowana, aby zwrócić sklonowaną kopię pliku Obiekt książkowy .
7. Metody współbieżności: wait() notify() i notifyAll()
Metody te są powiązane wątek Komunikacja w Javie . Używane są do tego, aby wątki czekały lub powiadamiały inne osoby w programowaniu współbieżnym.
Przykład użycia wszystkich metod klas obiektów w Javie
Javaimport 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(); } }
Wyjście
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
Wyjaśnienie: Powyższy przykład ilustruje użycie doString() równa się() hashCode() I klon() metody w Klasa książki .