Java — строго типизированный язык.
Каждая переменная имеет тип, каждое выражение имеет тип, и каждый тип строго определен.
Все присваивания проверяются на совместимость типов.
Нет автоматического приведения или преобразования конфликтующих типов.
Компилятор Java проверяет все выражения и параметры, чтобы убедиться, что типы совместимы.