空チェック前に null 文字列を処理する
前のステップでは、isEmpty()
メソッドを使って文字列が空かどうかをチェックする方法を学びました。しかし、Java には null
という重要な概念があります。null
値は、変数が何らかのオブジェクトを参照していないことを意味します。null
文字列に対して isEmpty()
のようなメソッドを呼び出そうとすると、プログラムは NullPointerException
でクラッシュします。
文字列に対して何らかのメソッドを呼び出す前に、null
文字列を処理することが重要です。最も安全な方法は、まず文字列が null
かどうかをチェックすることです。
null
文字列を処理する方法を実証するために、プログラムを修正しましょう。
-
WebIDE エディタで HelloJava.java
ファイルを開きます。
-
既存のコードを次のコードに置き換えます。
public class HelloJava {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "";
String str3 = null; // This string is null
System.out.println("Checking String 1: \"" + str1 + "\"");
if (str1 != null && !str1.isEmpty()) {
System.out.println("String 1 is not null and not empty.");
} else {
System.out.println("String 1 is null or empty.");
}
System.out.println("\nChecking String 2: \"" + str2 + "\"");
if (str2 != null && !str2.isEmpty()) {
System.out.println("String 2 is not null and not empty.");
} else {
System.out.println("String 2 is null or empty.");
}
System.out.println("\nChecking String 3: " + str3); // Note: printing null doesn't crash
if (str3 != null && !str3.isEmpty()) {
System.out.println("String 3 is not null and not empty.");
} else {
System.out.println("String 3 is null or empty.");
}
}
}
このコードでは:
null
文字列 str3
を導入しています。
isEmpty()
を呼び出す前に、まず str != null
を使って文字列が null
かどうかをチェックしています。
- 論理 AND 演算子 (
&&
) を使って、null
チェックと isEmpty()
チェックを組み合わせています。!str.isEmpty()
の部分は、str != null
が true の場合にのみ評価され、NullPointerException
を防ぎます。
if
文は、文字列が null
でなく、かつ空でないかどうかをチェックしています。
-
ファイルを保存します(Ctrl+S または Cmd+S)。
-
ターミナルでプログラムをコンパイルします。
javac HelloJava.java
-
プログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Checking String 1: "Hello"
String 1 is not null and not empty.
Checking String 2: ""
String 2 is null or empty.
Checking String 3: null
String 3 is null or empty.
この出力は、コードが str1
を null
でなく空でもないと正しく識別し、str2
と str3
を null
または空と識別し、クラッシュすることなく動作していることを示しています。
文字列に対してメソッドを呼び出す前に null
をチェックすることで、Java プログラムをより堅牢にし、一般的なエラーを防ぐことができます。これは Java プログラミングにおいて非常に重要な慣行です。