Рубрики

Класс объекта в Java

Класс объекта присутствует в пакете java.lang . Каждый класс в Java прямо или косвенно является производным от класса Object . Если класс не расширяет какой-либо другой класс, то он является прямым дочерним классом объекта, а если расширяет другой класс, то он является косвенным производным. Поэтому методы класса Object доступны для всех классов Java. Следовательно, объектный класс действует как корень иерархии наследования в любой программе Java.

Использование методов класса Object

В классе Object есть методы:

  1. toString () : toString () предоставляет строковое представление объекта и используется для преобразования объекта в строку. Метод toString () по умолчанию для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа знака «@» и шестнадцатеричного представления без знака хеш-кода объекта. Другими словами, это определяется как:
    // 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());
    }
    

    Всегда рекомендуется переопределить метод toString (), чтобы получить наше собственное String представление Object. Для больше на переопределении метода toString () обратитесь к — Переопределение toString () в Java
    Примечание: всякий раз, когда мы пытаемся напечатать любую ссылку на объект, вызывается метод toString ().

    Student s = new Student();
    
    // Below two statements are equivalent
    System.out.println(s);
    System.out.println(s.toString());
    
  2. hashCode () : для каждого объекта JVM генерирует уникальный номер, который является хэш-кодом. Он возвращает разные целые числа для разных объектов. Распространенное заблуждение об этом методе заключается в том, что метод hashCode () возвращает адрес объекта, который не является правильным. Он преобразует внутренний адрес объекта в целое число с помощью алгоритма. Метод hashCode () является нативным, потому что в Java невозможно найти адрес объекта, поэтому он использует родные языки, такие как C / C ++, чтобы найти адрес объекта.

    Использование метода hashCode (): возвращает значение хеша, которое используется для поиска объекта в коллекции. JVM (виртуальная машина Java) использует метод хеш-кода при сохранении объектов в связанные с хэшированием структуры данных, такие как HashSet, HashMap, Hashtable и т. Д. Основное преимущество сохранения объектов на основе хеш-кода заключается в том, что поиск становится легким.
    Примечание: переопределение метода hashCode () необходимо сделать так, чтобы для каждого объекта мы генерировали уникальный номер. Например, для студенческого класса мы можем вернуть номер броска. студента из метода hashCode (), так как он уникален.

    // Java-программа для демонстрации работы
    // hasCode () и toString ()

    public class Student

    {

        static int last_roll = 100

        int roll_no;

      

        // Конструктор

        Student()

        {

            roll_no = last_roll;

            last_roll++;

        }

      

        // Переопределение hashCode ()

        @Override

        public int hashCode()

        {

            return roll_no;

        }

      

        // Код драйвера

        public static void main(String args[])

        {

            Student s = new Student();

      

            // Ниже два утверждения эквивалентны

            System.out.println(s);

            System.out.println(s.toString());

        }

    }

    Выход :

    Student@64
    Student@64

    Обратите внимание, что 4 * 16 0 + 6 * 16 1 = 100

  3. equals (Object obj) : сравнивает данный объект с этим объектом (объектом, для которого вызывается метод). Это дает общий способ сравнения объектов на равенство. Рекомендуется переопределить метод equals (Object obj), чтобы получить собственное условие равенства для объектов. Дополнительные сведения о методе переопределения equals (Object obj) см. В разделе «Метод переопределения equals в Java».

    Примечание. Обычно необходимо переопределять метод hashCode () всякий раз, когда этот метод переопределяется, чтобы поддерживать общий контракт для метода hashCode, в котором говорится, что равные объекты должны иметь одинаковые хеш-коды.

  4. getClass () : возвращает объект класса объекта «this» и используется для получения фактического класса времени выполнения объекта. Он также может быть использован для получения метаданных этого класса. Возвращенный объект Class — это объект, который заблокирован статическими синхронизированными методами представленного класса. Поскольку оно является окончательным, мы не переопределяем его.

    // Java-программа для демонстрации работы 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());

        }

    }

    Выход:

    Class of Object obj is : java.lang.String
    

    Примечание. После загрузки файла .class JVM создаст объект типа java.lang.Class в области кучи. Мы можем использовать этот объект класса, чтобы получить информацию об уровне класса. Широко используется в отражении

  5. Метод finalize () : этот метод вызывается непосредственно перед сборкой мусора. Он вызывается сборщиком мусора на объекте, когда сборщик мусора определяет, что больше нет ссылок на объект. Мы должны переопределить метод finalize () для утилизации системных ресурсов, выполнения действий по очистке и минимизации утечек памяти. Например, перед уничтожением веб-контейнера объектов Servlet всегда вызывается метод finalize для выполнения операций очистки сеанса.
    Примечание: метод finalize вызывается только один раз для объекта, даже если этот объект может собираться несколько раз.

    // Java-программа для демонстрации работы finalize ()

    public class Test

    {

        public static void main(String[] args)

        {

            Test t = new Test();

            System.out.println(t.hashCode());

      

            t = null;

      

            // вызов сборщика мусора

            System.gc();

      

            System.out.println("end");

        }

      

        @Override

        protected void finalize()

        {

            System.out.println("finalize method called");

        }

    }

    Выход:

    366712642
    finalize method called
    end
    
  6. clone () : возвращает новый объект, который точно такой же, как этот объект. Для метода clone () обратитесь к Clone ()
  7. Остальные три метода ждать (), оповещать () notifyAll () связаны с параллельности. За подробностями обращайтесь к Inter-thread Communication в Java .
  8. Эта статья предоставлена Гауравом Миглани . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

    Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

    Рекомендуемые посты:

    Класс объекта в Java

    0.00 (0%) 0 votes