Обнаружение ошибок в недействительных выражениях
На этом этапе мы рассмотрим, что происходит, когда мы пытаемся оценить выражения, которые не являются допустимыми в Java, и как компилятор помогает нам обнаруживать эти ошибки. Понимание распространенных ошибок является важной частью изучения любого языка программирования.
Java - это строго типизированный язык, что означает, что тип данных имеет значение. Булевы выражения, в частности, требуют операндов, которые могут быть сравнены или оценены как булевое значение. Попытка использовать нессовместимые типы в булевом выражении приведет к ошибке компиляции.
Создадим ошибку в нашей программе HelloJava.java
намеренно, чтобы увидеть, как на это среагирует компилятор.
-
Откройте файл HelloJava.java
в редакторе WebIDE.
-
Измените код, добавив недопустимое сравнение. Например, попробуем сравнить булевое значение с целым числом:
public class HelloJava {
public static void main(String[] args) {
int age = 25;
boolean isStudent = true;
// This line will cause a compilation error
// boolean invalidComparison = (isStudent == age);
System.out.println("Age: " + age);
System.out.println("Is student: " + isStudent);
}
}
Временно закомментировали строку, которая вызовет ошибку, но в следующем шаге раскомментируем ее. Закомментированная строка boolean invalidComparison = (isStudent == age);
пытается сравнить переменную типа boolean
(isStudent
) с переменной типа int
(age
) с использованием оператора равенства (==
). Java не позволяет такое прямое сравнение, так как boolean
и int
- это разные типы данных, которые нельзя сравнивать таким образом.
-
Сохраните файл (Ctrl+S или Cmd+S).
-
Теперь раскомментируем строку, которая вызовет ошибку. Измените код на следующий:
public class HelloJava {
public static void main(String[] args) {
int age = 25;
boolean isStudent = true;
// This line will cause a compilation error
boolean invalidComparison = (isStudent == age);
System.out.println("Age: " + age);
System.out.println("Is student: " + isStudent);
System.out.println("Invalid comparison result: " + invalidComparison);
}
}
-
Сохраните файл еще раз.
-
Попробуйте скомпилировать программу в терминале:
javac HelloJava.java
Вы должны увидеть сообщение об ошибке от компилятора Java. Точное сообщение может немного отличаться в зависимости от версии Java, но оно будет указывать на несоответствие типов или нессовместимые типы.
~/project/HelloJava.java:7: error: incomparable types: boolean and int
boolean invalidComparison = (isStudent == age);
^
1 error
Это сообщение об ошибке сообщает вам имя файла (HelloJava.java
), номер строки (7) и описание ошибки ("incomparable types: boolean and int"). Это компилятор помогает вам обнаружить ошибки еще до того, как вы попытаетесь запустить программу.
-
Чтобы исправить ошибку и сделать программу снова компилируемой, вам нужно удалить или закомментировать недопустимую строку. Верните код к версии, где строка закомментирована:
public class HelloJava {
public static void main(String[] args) {
int age = 25;
boolean isStudent = true;
// This line will cause a compilation error
// boolean invalidComparison = (isStudent == age);
System.out.println("Age: " + age);
System.out.println("Is student: " + isStudent);
}
}
-
Сохраните файл.
-
Скомпилируйте программу еще раз:
javac HelloJava.java
На этот раз компиляция должна пройти успешно, и вы не увидите никаких сообщений об ошибках.
Понимание ошибок компиляции и способов их чтения - это важный навык для любого программиста. Компилятор Java - это мощный инструмент, который помогает вам обнаруживать многие распространенные ошибки на ранней стадии разработки.