| 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 типа преобразований: