Object | Number | Numeric types |
Byte | ||
Short | ||
Long | ||
Integer | ||
Floating-Point Types | ||
Double | ||
Float | ||
Character | ||
Boolean |
Методы
hashCode() | Три часто используемых метода |
equals() | |
toString() | |
notify() | пробуждает поток |
notifyAll() | пробуждает все потоки на мониторе |
wait() | останавливает поток (засыпает) |
getClass() | объект с именем класса |
clone() | копия |
finalize() | вызывается непосредственно перед удалением объекта сборщиком мусора |
HashCode - Общий контракт:
Equals - Основные принципы:
Рефлексивность
x.equals(x) = true
Симметричность
x.equals(y) = true
y.equals(x) = true
Транзитивность
x.equals(y) = true
y.equals(z) = true
x.equals(z) = true
Постоянство
Результат одно и то же число пока объект не изменится
Если объекта нет - ложь
x.equals(null) = false
Сериализация - процесс преобразования объекта в поток байтов для хранения.
Десериализация - процесс извлечения объекта из потока байтов.
Объект должен реализовывать интерфейс Serializable(интерфейс-маркер) либо Externalizable(переопределяем readObject()/writeObject())
Поля класса, если они объекты, так же должны реализовывать данные интерфейсы
Поля transient и static НЕ СЕРЕАЛИЗУЮТСЯ (не сохраняются)
Есть исключение:
private static final long serialVersionUID
При десереализации:
transient | - восстанавливаются значения по умолчанию, ссылочные -> null; |
static | - восстанавливаются по умолчанию в случае отсутствия объекта в области видимости. Иначе значения актуальные в данный момент; |
Для записи объекта используется метод writeObject() класса ObjectOutputStream, для чтения readObject() класса ObjectInputStream
При десереализации данные заполняются из потока, конструктор не используется.
2 типа преобразований: