Если int i;
объявляет локальную переменную, это ошибка компиляции, прежде чем она будет назначена;см. ответ Эрана для соответствующего раздела JLS.
Ошибки компиляции и ошибки времени компиляции являются синонимами.(Ошибка компилятора является другим синонимом, хотя иногда люди используют его для ссылки на ошибки в компиляторе.)
Делает ли это ошибкой синтаксиса / компилятора?
Это ошибка компиляции.Но это не синтаксическая ошибка.
Этот тип ошибки компиляции обычно называется семантическая ошибка .
A синтаксическая ошибка означает, что код не соответствует заданному синтаксису языка (как определено грамматикой).Другими словами, синтаксический анализатор не может его проанализировать.
A семантическая ошибка - это любая ошибка компиляции, которая не является синтаксической ошибкой.В зависимости от языка программирования семантические ошибки могут включают в себя такие вещи как:
- ошибки типа времени компиляции
- символы, которые не могут быть разрешены компилятором
- символы неправильного типа для контекста
- недоступный код
- использование неинициализированных переменных
- и т. Д.
Или ошибка времени выполнения, которую IDE достаточно ловко ловит?
Это не ошибка времени выполнения.
На самом деле это ошибка компилятора, но нетехнически синтаксическая ошибка?
Правильно.
Я всегда считал их синонимами, но, возможно, синтаксические ошибки - это просто тип ошибки компилятора ...
Они не являются синонимами.Синтаксические ошибки - это всего лишь один вид ошибок компиляции.
(К сожалению, некоторые реализации Javascript приводят в замешательство все ошибки компиляции как «Синтаксическая ошибка». Но это не имеет значения, если вы учите Java. Java не является Javascript.)