Введение в Java
Чтобы смотреть видео нужно иметь активную платную подписку и вступить в курс. Войти или зарегистрироваться.

Что такое "тип" в Java

  • размер, который поле будет занимать в оперативной памяти
  • мета информация (действие, свойство объекта ...)

Оперативная память компьютера

  • существует список полей с именами
  • каждое имя имеет свой адрес внутри оперативной памяти
  • склад, где хранится содержимое переменной - куча (heap)
  • лист переменных - stack (но не всегда), где хранятся адреса

Дополнительная инфа про стек и хип.

Согласно спецификации JVM типы группируются так:

  • примитивные primitive types (сохраняют значение прямо в листе переменных) - быстрые в чтении/записи (Спека);

  • не примитивные reference types, они же ссылочные (поля, которые сохраняют адрес в куче) - сложны и медленны, но могут работать с большими значениями (Спека):

                         - `class types`;
                         - `array types`;
                         - `interface types`.
    

Согласно спецификации самого языка в java типы группируются так:

Согласно спецификации JVM перечень примитивов ограничен (пока):

  • byte - 8bit (целочисленный)
  • short - 16bit (целочисленный)
  • int - 32bit (целочисленный)
  • long - 64bit (целочисленный)
  • float - 32bit (дробный)
  • double - 64bit (дробный)
  • boolean - true/false, 0/1, правда/ложь (когда-то его не было в JVM)
  • char - 16bit (один символ)
  • returnAddress - специальный тип JVM. На прямую не связан с самим языком java.

Спецификация языка java в основном консистентна со спецификацией JVM в вопросе приметивных типов. За исключением returnAddress и группировкой примитивов в различные подгруппы.

Пределы значений примитивов

Не примитивы (ссылочные типы) примеры:

  • Integer (обертка, позволяет производить дополнительные операции над численным типом. Например конвертируя его в String или на оборот)
  • class (особая конструкция языка, которая необходима при приведении типов. Отдельный курс Generic)
  • interface (упрощенное объявление класса, предопределение иных классов. Будет раскрыто в этом курсе)
  • annotation (оформлен как класс, но носит характер метаданных)
  • enum (специальный тип с заданным числом создаваемых объектов)
  • lambda (!8) (весьма условно можно назвать типом, это как бы ссылка на блок кода, но не класс в принципе)
  • String name --> 0xfffff (в name хранится адрес в куче), в кучу попадает конкретное значение
  • Object (тип, от которого наследуются все остальные типы в java)

Любому ссылочному типу можно присвоить значение null. То есть НЕ присвоить ссылке конкретный объект. С примитивными типами так нельзя. У них есть свои значения по умолчанию (см. документацию!).

null - это не объект(Object) и не тип. Это просто специальное значение, которое может быть назначено любому ссылочному типу. Это ключевое слово в Java, так же как public, static или final.

Системы исчисления

  • десятичная (0,1, 2, 3, 4, 5, 6, 7, 8, 9)
  • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,15, 16, 17, 18, 19, 20, 21...
  • пятеричная (0, 1, 2, 3, 4)
  • 0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24...
  • двоичная (0, 1)
  • 0, 1, 10, 11, 100, 101, 110, 111...
  • 2 bit = 11 (2) = 3 (10)

Что делать с минусом?

Д/З Указать сколько памяти будут занимать примитивные типы в классе, указать макс и мин число, которое может быть записано в countOfFloors и appartmentsCount; разобраться в правилах перевода из одной системы в другую; просмотреть (прочитать) все предложенные ссылки на литературу ключевых тем.

String address; 
int countOfFloors;
int appartmentsCount;
String owner;

Полезные ссылки:

Группы для общения: