Java Core

Основа основ...
Java На главную

Примитивы

Object Number Numeric types
Byte
Short
Long
Integer
Floating-Point Types
Double
Float
Character
Boolean

Object

Методы

hashCode() Три часто используемых метода
equals()
toString()
notify() пробуждает поток
notifyAll() пробуждает все потоки на мониторе
wait() останавливает поток (засыпает)
getClass() объект с именем класса
clone() копия
finalize() вызывается непосредственно перед удалением объекта сборщиком мусора

HashCode & Equals

HashCode - Общий контракт:

Equals - Основные принципы:

  1. Рефлексивность

    x.equals(x) = true

  2. Симметричность

    x.equals(y) = true

    y.equals(x) = true

  3. Транзитивность

    x.equals(y) = true

    y.equals(z) = true

    x.equals(z) = true

  4. Постоянство

    Результат одно и то же число пока объект не изменится

  5. Если объекта нет - ложь

    x.equals(null) = false

Сеарилизация & Десериализация

Сеарилизация - процесс преобразования объекта в поток байтов для хранения.

Десереализация - процесс извлечения объекта из потока байтов.

Объект должен реализовывать интерфейс Serializable(интерфейс-маркер) либо Externalizable(переопределяем readObject()/writeObject())

Поля класса, если они объекты, так же должны реализовывать данные интерфейсы

Поля transient и static НЕ СЕРЕАЛИЗУЮТСЯ (не сохраняются)

Есть исключение:

private static final long serialVersionUID

При десереализации:

transient - восстанавливаются значения по умолчанию, ссылочные -> null;
static - восстанавливаются по умолчанию в случае отсутствия объекта в области видимости. Иначе значения актуальные в данный момент;

Для записи объекта используется метод writeObject() класса ObjectOutputStream, для чтения readObject() класса ObjectInputStream

При десереализации данные заполняются из потока, конструктор не используется.

Преобразование и приведение примитивных типов

2 типа преобразований: