Обработка значений null и нуля
На предыдущем этапе мы научились проверять, является ли объект обёртки Double
равным null
. Теперь рассмотрим разницу между Double
, имеющим значение null
, и Double
, имеющим значение ноль (0.0
). Это различие важно, так как null
означает "отсутствие значения", в то время как 0.0
- это конкретное числовое значение.
Представьте, что вы отслеживаете скидку, примененную к продукту. Скидка, равная null
, может означать, что информация о скидке недоступна, в то время как скидка в размере 0.0
означает, что скидка явно не применена.
Давайте модифицируем нашу программу HelloJava.java
, чтобы продемонстрировать эту разницу.
-
Откройте файл HelloJava.java
в редакторе WebIDE.
-
Замените существующий код следующим:
public class HelloJava {
public static void main(String[] args) {
Double discount = null; // Discount information not available
if (discount == null) {
System.out.println("Discount information is not available (it is null).");
} else if (discount == 0.0) {
System.out.println("There is no discount (value is 0.0).");
} else {
System.out.println("Discount applied: " + discount);
}
System.out.println("---"); // Separator for clarity
Double zeroDiscount = 0.0; // Explicitly no discount
if (zeroDiscount == null) {
System.out.println("Discount information is not available (it is null).");
} else if (zeroDiscount == 0.0) {
System.out.println("There is no discount (value is 0.0).");
} else {
System.out.println("Discount applied: " + zeroDiscount);
}
System.out.println("---"); // Separator for clarity
Double appliedDiscount = 5.5; // A specific discount value
if (appliedDiscount == null) {
System.out.println("Discount information is not available (it is null).");
} else if (appliedDiscount == 0.0) {
System.out.println("There is no discount (value is 0.0).");
} else {
System.out.println("Discount applied: " + appliedDiscount);
}
}
}
В этом обновленном коде:
- Мы вводим три переменные типа
Double
: discount
(инициализированную значением null
), zeroDiscount
(инициализированную значением 0.0
) и appliedDiscount
(инициализированную значением 5.5
).
- Мы используем структуру
if-else if-else
для проверки состояния каждой переменной:
- Сначала мы проверяем, является ли переменная равной
null
.
- Если она не равна
null
, то мы проверяем, равно ли ее значение 0.0
.
- В противном случае мы предполагаем, что применена конкретная скидка.
-
Сохраните файл HelloJava.java
.
-
Скомпилируйте программу в терминале:
javac HelloJava.java
-
Запустите скомпилированную программу:
java HelloJava
Вы должны увидеть следующий вывод:
Discount information is not available (it is null).
---
There is no discount (value is 0.0).
---
Discount applied: 5.5
Этот вывод четко показывает, как Java различает Double
со значением null
и Double
со значением 0.0
. Правильная обработка этих случаев является важной частью написания надежных Java-приложений.
На следующем этапе мы рассмотрим более современный подход к обработке потенциальных значений null
с использованием класса Optional
, который может сделать ваш код более безопасным и читаемым.