Java пустая, пустая, пустая, все еще тупо непонятная?

При написании кода я часто сталкиваюсь с ситуациями, когда оцениваются пустое, нулевое и пустое значение. Эти понятия могут показаться похожими, но они имеют разное значение и использование. В этой статье будут представлены различия между этими тремя концепциями и проанализировано, как выносить суждения в конкретных сценариях.

пустой

Пустой относится к строке, длина которой равна 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 — это не пустая строка, а строка, содержащая два пробела.

нулевой

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 равно нулю.

Следует отметить, что для базовых типов данных (таких как 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 содержит два пробела, и это единственное содержимое этой строки.

Следует отметить, что до 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().

краткое содержание

Три концепции пустого, нулевого и пустого имеют очевидные различия:

Пусто означает, что строка имеет длину 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 содержит два пробела.

Как оценить пустую коллекцию 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(). Первый вывод верен, потому что в списке нет элементов; второй вывод ложен, потому что в списке есть один элемент.

Карта пуста

Карта может быть оценена, пуста ли она следующими способами:

1. Используйте метод isEmpty(): Map предоставляет метод isEmpty(), который возвращает значение true, если в Map нет отношения отображения.

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
    }
}

Следует отметить, что все три вышеуказанных метода могут определить, пуста ли карта, но рекомендуется выбрать наиболее подходящий метод в соответствии с реальной ситуацией. Если вам нужно только знать, пуста ли карта, используйте метод isEmpty() напрямую; если вам нужно выполнить другие операции (например, обход, удаление и т. д.), вам может потребоваться получить размер или коллекцию ключей Карта.

рекомендация

отblog.csdn.net/xijinno1/article/details/132123472