Что означает строгая типизация в Java?

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

Ответ

Строгая типизация (strong typing) в Java означает, что язык требует явного объявления типов для переменных и обеспечивает строгую проверку совместимости типов на этапе компиляции. Операции между несовместимыми типами запрещены без явного приведения.

Ключевые характеристики:

  • Явное объявление: Тип переменной определяется при ее объявлении и не может быть изменен.
    int count = 5; // Тип 'int' зафиксирован
    // count = "text"; // Ошибка компиляции: несовместимые типы
  • Строгая проверка операций: Компилятор проверяет типы в выражениях.
    int a = 10;
    String b = "20";
    // int c = a + b; // Ошибка: int + String
    int c = a + Integer.parseInt(b); // Требуется явное преобразование
  • Контроль присваиваний: Присвоение значения переменной возможно только если типы совместимы (совпадают или существует отношение наследования/реализации).
    Object obj = "Hello"; // OK, String является Object
    String str = obj; // Ошибка компиляции: требуется явное приведение (String) obj
  • Отсутствие неявных "опасных" преобразований: В отличие от слабо типизированных языков, Java не выполняет автоматические преобразования между логически несвязанными типами (например, число в строку в арифметической операции).

Сравнение: Java строго типизирована, в отличие от слабо типизированного JavaScript, где возможны неявные преобразования ("5" - 2 = 3).