Java の空、null、空白はまだ愚かなほど不明瞭ですか?

コードを書いていると、空、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() メソッドを直接使用します。他の操作 (トラバーサル、削除など) を実行する必要がある場合は、マップのサイズまたはキー コレクションを取得する必要がある場合があります。地図。

おすすめ

転載: blog.csdn.net/xijinno1/article/details/132123472