Почему примитивные типы в Java называют строго и статически типизированными?

«Почему примитивные типы в Java называют строго и статически типизированными?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Примитивные типы являются основой статической и строгой типизации Java, что обеспечивает безопасность и эффективность на этапе компиляции.

Строгая типизация (Strong Typing):

  • Тип переменной фиксирован и не может быть изменен после объявления.
  • Компилятор запрещает операции между несовместимыми типами без явного приведения.

Статическая типизация (Static Typing):

  • Проверка соответствия типов выполняется во время компиляции, а не во время выполнения программы.
  • Это позволяет отловить множество ошибок до запуска кода.

Пример, иллюстрирующий оба свойства:

int count = 10;
// count = "текст"; // ОШИБКА КОМПИЛЯЦИИ: несовместимые типы (статическая проверка)
// count = 10.5;     // ОШИБКА КОМПИЛЯЦИИ: возможна потеря точности (строгая типизация)

double price = 29.99;
// int total = count * price; // ОШИБКА КОМПИЛЯЦИИ: требуется явное приведение типа
int total = (int) (count * price); // Явное приведение (каст) необходимо

Преимущества:

  • Раннее обнаружение ошибок: Ошибки типов выявляются компилятором.
  • Повышение читаемости: Тип переменной явно указан в коде.
  • Оптимизация производительности: JVM точно знает тип данных и может выполнять операции над примитивами напрямую, без динамической диспетчеризации.