コードを書いていると、空、null、空白を判定する場面によく遭遇します。これらの概念は似ているように見えますが、意味と使用法が異なります。この記事では、これら 3 つの概念の違いを紹介し、特定のシナリオでの判断方法を分析します。
空
空とは、長さが 0 の文字列を指します。Java コレクション オブジェクトには要素がありません。文字列が空かどうかを判断するには、 isempty() メソッドを使用します。isEmpty() メソッドを使用して、Java コレクション要素が空かどうかを判断することもできます。
例えば:
public class Demo {
public static void main(String[] args) {
String str = "";
if (str.isEmpty()) {
System.out.println("This string is empty");
}
}
}
変数 str が空の文字列であるため、上記のコードは「この文字列は空です」と出力します。
さらに、よくある間違いは、スペースまたは複数のスペースを含む文字列が空であると考えることですが、これは誤りです。例えば:
public class Demo {
public static void main(String[] args) {
String str = " ";
if (str.isEmpty()) {
System.out.println("This string is empty");
}
}
}
変数 str は空の文字列ではなく、2 つのスペースを含む文字列であるため、上記のコードは何も出力しません。
ヌル
null はオブジェクトが存在しないことを示します。参照変数が初期化されていない場合、または明示的に null の値が割り当てられている場合、変数の値は null になります。例えば:
public class Demo {
public static void main(String[] args) {
String str = null;
if (str == null) {
System.out.println("This string is null");
}
}
}
変数 str の値が null であるため、上記のコードは「この文字列は null です」と出力します。
基本的なデータ型 (int、double など) には、 null の値を割り当てることができないことに注意してください。プリミティブ データ型を null に割り当てようとすると、コンパイル エラーが発生します。
空欄
空白とは、長さが 0 より大きく、スペース (タブと改行を含む) のみを含む文字列を指します。Java では、isblank() メソッドを使用して、文字列が空白かどうかを判断できます。例えば:
public class Demo {
public static void main(String[] args) {
String str = " ";
if (str.isBlank()) {
System.out.println("This string is blank");
}
}
}
変数 str には 2 つの空白が含まれており、これがこの文字列の唯一の内容であるため、上記のコードは「この文字列は空白です」と出力します。
Java 11 より前には isblank() メソッドがないことに注意してください。以前のバージョンの Java を使用している場合は、trim() メソッドを使用して文字列の両端からスペースを削除し、結果が空かどうかを確認する必要があります。例えば:
public class Demo {
public static void main(String[] args) {
String str = " ";
if (str.trim().isEmpty()) {
System.out.println("This string is blank");
}
}
}
また、変数 str は、trim() メソッドによる処理後に空の文字列になるため、上記のコードでは「この文字列は空白です」と出力されます。
まとめ
空、null、空白の 3 つの概念には明らかな違いがあります。
空とは、文字列の長さが 0 で、Java コレクションに要素が存在しないことを意味します。
null はオブジェクトが存在しないことを示します。
空白は、長さが 0 より大きく、スペースのみが含まれる文字列を意味します。
これらの概念と違いをよりよく理解するために、いくつかのサンプル コードを次に示します。
public class Demo {
public static void main(String[] args) {
String emptyStr = "";
String nullStr = null;
String blankStr = " ";
// 判断empty字符串
if (emptyStr.isEmpty()) {
System.out.println("This string is empty");
}
// 判断null字符串
if (nullStr == null) {
System.out.println("This string is null");
}
// 判断blank字符串
if (blankStr.isBlank()) { // 注意: Java 11之前是没有isblank()方法的
System.out.println("This string is blank");
}
}
}
上記のコードは、変数 emptyStr が空の文字列であり、変数blankStr に 2 つのスペースが含まれているため、「この文字列は空です」と「この文字列は空白です」を出力します。
空のJavaコレクションを判断する方法
リストが空です
isEmpty() メソッドは、java.util.Collection インターフェースを実装するすべてのクラス (List、Set など) で使用できる一般的なメソッドです。コレクションに要素がない場合は true を返し、それ以外の場合は false を返します。
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // 输出 true
list.add("apple");
System.out.println(list.isEmpty()); // 输出 false
}
}
上記のコードは空の ArrayList を作成し、isEmpty() メソッドを使用してそれが空かどうかを確認します。次に、要素がリストに追加され、isEmpty() メソッドを使用して再度チェックされます。最初の出力は、リストに要素がないため true になります。2 番目の出力は、リストに要素が 1 つあるため、false になります。
マップは空です
マップが空かどうかは、次の方法で判断できます。
1. isEmpty() メソッドを使用します。Map には、Map 内にマッピング関係がない場合に true を返す isEmpty() メソッドが用意されています。
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
System.out.println(map.isEmpty()); // 输出 true
map.put("key", "value");
System.out.println(map.isEmpty()); // 输出 false
}
}
2. マップのサイズを決定します: size() メソッドを使用して、マップ内のキーと値のペアの数を取得します。値が 0 の場合は、マップが空であることを意味します。
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
System.out.println(map.size() == 0); // 输出 true
map.put("key", "value");
System.out.println(map.size() == 0); // 输出 false
}
}
3. マップ内のキー セットが空かどうかを判断します。keySet() メソッドを使用してマップ内のすべてのキーのセットを取得し、そのセットが空かどうかを判断します。
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
System.out.println(map.keySet().isEmpty()); // 输出 true
map.put("key", "value");
System.out.println(map.keySet().isEmpty()); // 输出 false
}
}
上記の 3 つの方法はいずれもマップが空であるかどうかを判断できますが、実際の状況に応じて最適な方法を選択することをお勧めします。Map が空かどうかだけを知りたい場合は、 isEmpty() メソッドを直接使用します。他の操作 (トラバーサル、削除など) を実行する必要がある場合は、マップのサイズまたはキー コレクションを取得する必要がある場合があります。地図。