Объяснение вывода метода 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().
toString — помогает представить объект в виде строки. (для получения дополнительной информации - https://www.geeksforgeeks.org/object-tostring-method-in-java/ перейдите по этой ссылке).
equals и HashCode — метод equals используется для сравнения равенства двух объектов, а HashCode полезен для генерации хэш-кода объекта. Оба вместе полезны в HashMap (в основном). Чтобы получить дополнительную информацию, ознакомьтесь с внутренней реализацией HashMap. https://www.geeksforgeeks.org/internal-working-of-hashmap-java/
Я надеюсь, что это будет полезно для вас.