null とゼロの値の扱い
前のステップでは、Double
ラッパーオブジェクトが null
かどうかをチェックする方法を学びました。今度は、Double
が null
である場合と、Double
の値がゼロ (0.0
) である場合の違いを探りましょう。この区別は重要です。なぜなら、null
は「値がない」ことを意味し、0.0
は特定の数値です。
商品に適用される割引を追跡するシナリオを考えてみましょう。null
の割引は、割引情報が利用できないことを意味するかもしれません。一方、0.0
の割引は、明確に割引が適用されていないことを意味します。
この違いを実演するために、HelloJava.java
プログラムを修正しましょう。
-
WebIDE エディタで HelloJava.java
ファイルを開きます。
-
既存のコードを次のコードに置き換えます。
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);
}
}
}
この更新されたコードでは、以下のことを行っています。
- 3 つの
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 が null
の Double
と値が 0.0
の Double
をどのように区別するかを明確に示しています。これらのケースを正しく処理することは、堅牢な Java アプリケーションを作成するために不可欠です。
次のステップでは、潜在的な null
値を扱うためのより現代的なアプローチとして、Optional
クラスを使用する方法を探ります。これにより、コードをより安全で読みやすくすることができます。