Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Результатом будет строка:
java.lang.String
В отличие от оператора instanceof, метод getClass() всегда возвращает точно тот класс, от которого был порожден объект.
equalsO
Этот метод имеет один аргумент типа Object и возвращает boolean. Как уже говорилось, equals( ) служит для сравнения объектов по значению, а не по ссылке. Сравнивается состояние объекта, у которого вызывается этот метод, с передаваемым аргументом.
Point p1=new Point(2,3); Point p2=new Point(2,3); print(p1.equals(p2)j;
Результатом будет true.
Поскольку сам Object не имеет полей, а значит, и состояния, в этом классе метод equals возвращает результат сравнения по ссылке. Однако при написании нового класса можно переопределить этот метод и описать правильный алгоритм сравнения по значению (что и сделано в большинстве стандартных классов). Соответственно, в класс Point также необходимо добавить переопределенный метод сравнения:
public boolean equals(Object о) {
// Сначала необходимо убедиться, что переданный
// объект совместим с типом Point
if (о instanceof Point) {
//Типы совместимы, можно провести преобразование
Point р = (Point)o;
// Возвращаем результат сравнения координат return р.х==х && р.у==у;
}
// Если объект не совместим с Point, возвращаем false return false;
}
hashCodeO
Данный метод возвращает значение int. Цель hashCodeO -представить любой объект целым числом. Особенно эффективно это используется в хэш-таблицах (в Java есть стандартная реализация такого хранения данных, она будет рассмотрена позже). Конечно, нельзя потребовать, чтобы различные объекты возвращали различные хэш-коды, но, по крайней мере, необходимо, чтобы объекты, равные по значению (метод equals() возвращает true), возвращали одинаковые хэш-коды.
В классе Object этот метод реализован на уровне JVM. Сама виртуальная машина генерирует число хеш-кодов, основываясь на расположении объекта в памяти.
toStringf)
Этот метод позволяет получить текстовое описание любого объекта. Создавая новый класс, данный метод можно переопределить и возвращать более подробное описание. Для класса Object и его наследников, не переопределивших toStringO, метод возвращает следующее выражение:
getClass().getName()+"@"+hashCode()
Метод getNameO класса Class уже приводился в пример, а хэш-код еШе дополнительно обрабатывается специальной функцией для представления в шестнадцатеричном формате.