はじめに
この実験では、Java で文字列が空白かどうかをチェックする方法を学びます。Java 11 で導入された isBlank() メソッドを使って、文字列が空であるか、空白文字のみで構成されているかを効率的に判断します。
実践的な例を通じて、まず isBlank() を使って様々なタイプの文字列をチェックします。次に、isBlank() と null チェックを組み合わせて、堅牢な文字列検証を行う方法を学びます。最後に、isBlank() と isEmpty() の動作を比較して、それらの主要な違いを理解します。
isBlank() を使用して空白文字列をチェックする
このステップでは、Java の isBlank() メソッドを使って文字列が空白かどうかをチェックする方法を学びます。空白文字列とは、空白文字(スペース、タブ、改行)のみで構成されるか、または空の文字列のことです。
isBlank() メソッドは Java 11 で導入され、空白文字列をチェックする便利な方法です。文字列が空であるか、空白文字のみで構成されている場合は true を返し、それ以外の場合は false を返します。
isBlank() メソッドを示すために、簡単な Java プログラムを作成しましょう。
WebIDE エディタで
HelloJava.javaファイルが開いていない場合は、開きます。ファイルの内容全体を次のコードに置き換えます。
public class HelloJava { public static void main(String[] args) { String str1 = ""; // 空の文字列 String str2 = " "; // スペースのみの文字列 String str3 = "Hello"; // 空白でない文字列 String str4 = " Hello "; // 前後にスペースがある文字列 System.out.println("Is str1 blank? " + str1.isBlank()); System.out.println("Is str2 blank? " + str2.isBlank()); System.out.println("Is str3 blank? " + str3.isBlank()); System.out.println("Is str4 blank? " + str4.isBlank()); } }このコードでは:
- 空の文字列、スペースのみの文字列、空白でない文字列、前後にスペースがある文字列という 4 つの異なる文字列を宣言しています。
str.isBlank()を使って各文字列が空白かどうかをチェックし、結果を出力しています。
ファイルを保存します(Ctrl+S または Cmd+S)。
次に、プログラムをコンパイルしましょう。WebIDE の下部にあるターミナルを開き、
~/projectディレクトリにいることを確認します。もしそうでない場合は、cd ~/projectコマンドを使って移動します。そして、javacコマンドを使ってコードをコンパイルします。javac HelloJava.javaエラーがなければ、
~/projectディレクトリにHelloJava.classファイルが作成されます。最後に、
javaコマンドを使ってコンパイルされたプログラムを実行します。java HelloJava次の出力が表示されるはずです。
Is str1 blank? true Is str2 blank? true Is str3 blank? false Is str4 blank? falseご覧の通り、
isBlank()は空の文字列 (str1) とスペースのみの文字列 (str2) を正しく空白と識別し、str3とstr4は非空白文字を含むため非空白とみなされます。
isBlank() と null チェックを組み合わせる
前のステップでは、isBlank() を使って空文字列または空白文字のみの文字列をチェックする方法を学びました。ただし、文字列変数が null の場合、isBlank() は NullPointerException をスローします。実際のアプリケーションでは null 文字列に遭遇することがよくあるため、適切に処理することが重要です。
文字列が null または空白かどうかを安全にチェックするには、null チェックと isBlank() メソッドを組み合わせる必要があります。これを行う最も一般的な方法は、if 文を使用することです。
if (str == null || str.isBlank()) {
// 文字列は null または空白
} else {
// 文字列は null でも空白でもない
}
プログラムを変更して、null 文字列を含め、その処理方法を示しましょう。
WebIDE エディタで
HelloJava.javaファイルを開きます。現在のコードを次のコードに置き換えます。
public class HelloJava { public static void main(String[] args) { String str1 = ""; // 空の文字列 String str2 = " "; // スペースのみの文字列 String str3 = "Hello"; // 空白でない文字列 String str4 = null; // null 文字列 System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank())); System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank())); System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank())); System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank())); } }この更新されたコードでは:
null文字列変数str4を追加しました。str == null || str.isBlank()という条件を使って、各文字列がnullまたは空白かどうかをチェックしています。||演算子は「または」を意味します。最初の部分 (str == null) が true の場合、2 番目の部分 (str.isBlank()) はチェックされず、NullPointerExceptionを防ぎます。
ファイルを保存します(Ctrl+S または Cmd+S)。
ターミナルで変更したプログラムをコンパイルします。
javac HelloJava.javaコンパイルされたプログラムを実行します。
java HelloJava次の出力が表示されるはずです。
Is str1 null or blank? true Is str2 null or blank? true Is str3 null or blank? false Is str4 null or blank? trueこの出力から、組み合わせたチェックが空文字列、スペースのみの文字列、および
null文字列を「null または空白」と正しく識別し、空白でない文字列を「null でも空白でもない」と正しく識別していることがわかります。
null チェックと isBlank() を組み合わせることは、Java プログラムで様々な文字列の状態を処理する堅牢な方法です。
isBlank() と isEmpty() を比較する
前のステップでは、isBlank() を使って空文字列または空白文字のみの文字列をチェックしました。Java の isEmpty() メソッドについても耳にしたことがあるかもしれません。このステップでは、isBlank() と isEmpty() を比較して、それらの違いを理解します。
isEmpty() メソッドは Java 1.0 から利用可能です。文字列の長さが 0 の場合(つまり、空文字列 "" の場合)のみ true を返します。空白文字のみを含む文字列を含む他の文字列については false を返します。
プログラムを最後に一度変更して、isBlank() と isEmpty() の両方を使い、異なるタイプの文字列に対する動作を確認しましょう。
WebIDE エディタで
HelloJava.javaファイルを開きます。現在のコードを次のコードに置き換えます。
public class HelloJava { public static void main(String[] args) { String str1 = ""; // 空の文字列 String str2 = " "; // スペースのみの文字列 String str3 = "Hello"; // 空白でない文字列 String str4 = null; // null 文字列 System.out.println("--- Using isBlank() ---"); System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank())); System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank())); System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank())); // 注意:isBlank() を呼び出す前に null チェックが必要です System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank())); System.out.println("\n--- Using isEmpty() ---"); // 注意:isEmpty() を呼び出す前に null チェックが必要です System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty())); System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty())); System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty())); System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty())); } }このコードでは:
isBlank()とisEmpty()の両方を示すセクションを追加しました。isBlank()とisEmpty()の両方を呼び出す前に、組み合わせた null チェック (str == null || ...) を使用して、NullPointerExceptionを防いでいます。
ファイルを保存します(Ctrl+S または Cmd+S)。
ターミナルでプログラムをコンパイルします。
javac HelloJava.javaコンパイルされたプログラムを実行します。
java HelloJava次の出力が表示されるはずです。
--- Using isBlank() --- Is str1 blank? true Is str2 blank? true Is str3 blank? false Is str4 blank? true --- Using isEmpty() --- Is str1 empty? true Is str2 empty? false Is str3 empty? false Is str4 empty? true出力から、主な違いを確認できます。
isBlank()は空文字列 ("") と空白文字のみの文字列 (" ") の両方に対してtrueを返します。isEmpty()は空文字列 ("") に対してのみtrueを返します。空白文字のみの文字列 (" ") に対してはfalseを返します。
どちらのメソッドも、潜在的に null の文字列に対して呼び出す前に null チェックが必要です。
まとめると:
- 文字列の長さが 0 かどうかのみをチェックしたい場合は、
isEmpty()を使用します。 - 文字列が空であるか、空白文字のみを含むかをチェックしたい場合は、
isBlank()を使用します。
これら 2 つのメソッドの違いを理解することは、Java で正しく堅牢な文字列処理コードを書くために重要です。
まとめ
この実験では、Java 11 で導入された isBlank() メソッドを使用して、Java で文字列が空白かどうかをチェックする方法を学びました。空文字列、空白文字のみの文字列、および内容を持つ文字列など、さまざまなタイプの文字列に対して isBlank() を使用する練習を行いました。また、isBlank() の機能を示すために、簡単な Java プログラムをコンパイルして実行しました。



