Тестирование с нулевыми массивами
На этом последнем этапе мы узнаем, что происходит, когда вы пытаетесь получить доступ к свойству length
массива, который не был инициализирован или имеет значение null
. Понимание того, как обрабатывать null
-значения, является важным для предотвращения ошибок в ваших программах.
В Java переменная, которая объявлена, но не имеет ссылки на объект, имеет значение по умолчанию null
. Если вы попытаетесь получить доступ к свойству или методу объекта, равного null
, Java выбросит исключение NullPointerException
. Это распространенная ошибка времени выполнения, которую вы будете встречать в Java-программировании.
Модифицируем нашу программу, чтобы увидеть, что происходит, когда мы пытаемся получить длину (length
) массива, равного null
, и как обойти эту ситуацию без ошибок.
-
Откройте файл HelloJava.java
в редакторе WebIDE.
-
Замените текущий код следующим:
public class HelloJava {
public static void main(String[] args) {
int[] numbers = null; // Declare an array but set it to null
// Attempt to access the length property (this will cause an error)
// int arraySize = numbers.length; // Commenting this out to prevent error
// How to safely check for null before accessing length
if (numbers != null) {
int arraySize = numbers.length;
System.out.println("The size of the array is: " + arraySize);
} else {
System.out.println("The array is null. Cannot get its length.");
}
}
}
Вот разбор изменений:
int[] numbers = null;
: Мы объявляем массив numbers
, но явно устанавливаем его значение равным null
. Это означает, что переменная numbers
в данный момент не ссылается на реальный объект массива в памяти.
// int arraySize = numbers.length;
: Мы закомментировали строку, которая пытается напрямую получить доступ к numbers.length
. Если бы мы запустили этот код без проверки if
, это привело бы к NullPointerException
.
if (numbers != null)
: Это важная часть для обработки null
. Мы используем оператор if
для проверки, не является ли переменная numbers
равной null
. Оператор !=
означает "не равно".
int arraySize = numbers.length; System.out.println("The size of the array is: " + arraySize);
: Этот блок кода выполняется только в том случае, если numbers
не равно null
. Внутри этого блока можно безопасно получить доступ к numbers.length
.
else
: Этот блок выполняется, если условие в операторе if
ложно, то есть numbers
является null
.
System.out.println("The array is null. Cannot get its length.");
: Это сообщение выводится, когда массив равен null
, информируя пользователя, что длину массива определить нельзя.
-
Сохраните файл (Ctrl+S или Cmd+S).
-
Скомпилируйте модифицированную программу в терминале:
javac HelloJava.java
-
Запустите скомпилированную программу:
java HelloJava
Вы должны увидеть следующий вывод:
The array is null. Cannot get its length.
Этот вывод показывает, что наша программа правильно определила, что массив был null
, и обработала ситуацию без выброса NullPointerException
.
Обработка null
-значений - это очень важный навык в Java-программировании. Всегда проверяйте, не является ли ссылка на объект равной null
, прежде чем пытаться получить доступ к его свойствам или методам, чтобы избежать ошибок времени выполнения.