Java empty、null、blank的区别小结

 更新时间:2023年06月02日 09:51:35   作者:软件质量保障  
本文主要介绍了Java empty、null、blank的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

写代码时候经常遇到判empty、null和blank的情况。这些概念看起来很相似,但是它们有着不同的含义和用法。本文将介绍这三个概念的区别,并分析具体场景该如何做判断。

empty

empty是指一个字符串长度为0/Java集合对象不存在元素,可以使用isempty()方法来判断一个字符串是否为空。

也可以使用isEmpty()方法来判断Java集合元素否为空。

例如:

String str = "";
if (str.isEmpty()) {
    System.out.println("This string is empty");
}

上述代码会输出"This string is empty",因为变量str是一个空字符串。

此外,还有一个常见的错误就是认为一个字符串包含空格或多个空格就是empty,这是不正确的。例如:

String str = "  ";
if (str.isEmpty()) {
    System.out.println("This string is empty");
}

上述代码不会输出任何内容,因为变量str并不是一个空字符串,而是包含两个空格的字符串。

null

null表示一个对象不存在。如果一个引用变量没有被初始化或被显式赋值为null,那么这个变量的值就是null。例如:

String str = null;
if (str == null) {
    System.out.println("This string is null");
}

上述代码会输出"This string is null",因为变量str的值为null。

需要注意的是,对于基本数据类型(如int、double等),它们不能被赋值为null。如果试图将一个基本数据类型赋值为null,会出现编译错误。

blank

blank是指一个字符串长度大于0但是只包含空格(包括制表符和换行符)的情况。Java中可以使用isblank()方法来判断一个字符串是否为blank。例如:

String str = "  ";
if (str.isBlank()) {
    System.out.println("This string is blank");
}

上述代码会输出"This string is blank",因为变量str包含两个空格,并且这是这个字符串唯一的内容。

需要注意的是,在Java 11之前是没有isblank()方法的。如果你正在使用早期版本的Java,应该使用trim()方法来去掉字符串两端的空格,并检查结果是否为空。例如:

String str = "  ";
if (str.trim().isEmpty()) {
    System.out.println("This string is blank");
}

上述代码也会输出"This string is blank",因为变量str经过trim()方法处理后变成了一个空字符串。

总结一下

empty、null和blank三个概念有着明显的区别:

  • empty表示一个字符串长度为0,Java集合不存在元素。
  • null表示一个对象不存在;
  • blank表示一个字符串长度大于0但是只包含空格。

为了更好地理解这些概念和区别,以下是一些示例代码。

public class StringExample {
    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()) {
            System.out.println("This string is blank");
        }
    }
}

上述代码会输出"This string is empty"和"This string is blank",因为变量emptyStr是一个空字符串,变量blankStr包含两个空格。

Java集合如何判空

Java List判空

isEmpty() 方法是一个通用的方法,可以用于所有实现了 java.util.Collection 接口的类(如 List、Set 等等)。如果集合中没有任何元素,则返回 true;否则返回 false。

List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // 输出 true
list.add("apple");
System.out.println(list.isEmpty()); // 输出 false

以上代码创建了一个空的 ArrayList,并使用 isEmpty() 方法检查它是否为空。然后在列表中添加了一个元素,再次使用 isEmpty() 方法进行检查。第一次输出为 true,因为列表中没有元素;第二次输出为 false,因为列表中有一个元素。

Java Map判空

Map可以通过以下几种方式来判断是否为空:

1. 使用 isEmpty() 方法:Map 提供了一个 isEmpty() 方法,如果 Map 中没有任何映射关系,则返回 true。

Map<String, String> map = new HashMap<>();
System.out.println(map.isEmpty()); // 输出 true
map.put("key", "value");
System.out.println(map.isEmpty()); // 输出 false

2. 判断 Map 的大小:使用 size() 方法获取 Map 中键值对的数量,如果为 0,则说明 Map 为空。

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. 判断 Map 中的键集合是否为空:使用 keySet() 方法获取 Map 中所有键的集合,然后判断集合是否为空。

Map<String, String> map = new HashMap<>();
System.out.println(map.keySet().isEmpty()); // 输出 true
map.put("key", "value");
System.out.println(map.keySet().isEmpty()); // 输出 false

需要注意的是,以上三种方法都可以判断 Map 是否为空,但建议根据实际情况选择最适合的方法。如果只需要知道 Map 是否为空,直接使用 isEmpty() 方法;如果需要执行其他操作(如遍历、删除等),则可能需要获取 Map 的大小或键集合。

到此这篇关于Java empty、null、blank的区别小结的文章就介绍到这了,更多相关Java empty null blank内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis判断int是否为空的时候,需要注意的3点

    mybatis判断int是否为空的时候,需要注意的3点

    这篇文章主要介绍了mybatis判断int是否为空的时候,需要注意的3点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Spring Boot通过Junit实现单元测试过程解析

    Spring Boot通过Junit实现单元测试过程解析

    这篇文章主要介绍了Spring Boot通过Junit实现单元测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • java两个integer数据判断相等用==还是equals

    java两个integer数据判断相等用==还是equals

    本文主要介绍了java两个integer数据判断相等用==还是equals,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Java应用程序开发学习之static关键字应用

    Java应用程序开发学习之static关键字应用

    今天小编就为大家分享一篇关于Java应用程序开发学习之static关键字应用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • SpringBoot中的异常处理与参数校验的方法实现

    SpringBoot中的异常处理与参数校验的方法实现

    这篇文章主要介绍了SpringBoot中的异常处理与参数校验的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • JAVA序列化和反序列化的底层实现原理解析

    JAVA序列化和反序列化的底层实现原理解析

    这篇文章主要介绍了JAVA序列化和反序列化的底层实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java synchronized与CAS使用方式详解

    Java synchronized与CAS使用方式详解

    提到Java的知识点一定会有多线程,JDK版本不断的更迭很多新的概念和方法也都响应提出,但是多线程和线程安全一直是一个重要的关注点。比如说我们一入门就学习的synchronized怎么个实现和原理,还有总是被提到的CAS是啥,他和synchronized关系是啥?请往下看
    2023-01-01
  • Java实现查找当前字符串最大回文串代码分享

    Java实现查找当前字符串最大回文串代码分享

    本文给大家介绍的是如何使用Java实现查找当前字符串最大回文串代码,非常的简单实用,有需要的小伙伴可以参考下
    2016-07-07
  • java Class文件结构解析常量池字节码

    java Class文件结构解析常量池字节码

    这篇文章主要为大家介绍了java Class文件的整体结构解析常量池字节码详细讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • java多线程之停止线程的方法实例代码详解

    java多线程之停止线程的方法实例代码详解

    这篇文章主要介绍了java多线程之停止线程的方法实例代码详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05

最新评论