Объяснение вывода метода toString и различия между выводом toString и выводом hashCode

      public class ObjectClass {
    public static void main(String[] args) {
        Demo dm = new Demo();
        Object obj = dm.getObject();
        System.out.println("Class name :: "+obj.getClass());
        System.out.println("To String " + dm.toString());
        System.out.println("HashCode "+ dm.hashCode());
    }
}

Выход

          Class name :: class newTopic.Object.Demo
    To String :: newTopic.Object.Demo@2a139a55
    HashCode :: 705927765

В чем разница между этим [email protected] и hascode 705927765

2 ответа

Если вы посмотрите на Javadoc Objectх toString(), вы увидите, что:

Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа @ и беззнакового шестнадцатеричного представления хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Следовательно dm.toString()вернулся:

      newTopic.Object.Demo      @           2a139a55

getClass().getName()  +  '@'  + Integer.toHexString(   705927765   )
                                                     dm.hashCode()

Эти два метода класса Object. Если вы не переопределите, то они будут унаследованы автоматически. Здесь я попытаюсь объяснить 3 метода: toString(), equals() и HashCode().

  1. toString — помогает представить объект в виде строки. (для получения дополнительной информации - https://www.geeksforgeeks.org/object-tostring-method-in-java/ перейдите по этой ссылке).

  2. equals и HashCode — метод equals используется для сравнения равенства двух объектов, а HashCode полезен для генерации хэш-кода объекта. Оба вместе полезны в HashMap (в основном). Чтобы получить дополнительную информацию, ознакомьтесь с внутренней реализацией HashMap. https://www.geeksforgeeks.org/internal-working-of-hashmap-java/

Я надеюсь, что это будет полезно для вас.

Другие вопросы по тегам