Java empty、null、blank 还傻傻分不清楚?

这篇具有很好参考价值的文章主要介绍了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 的大小或键集合。

小伙伴们,你学废了吗??文章来源地址https://www.toymoban.com/news/detail-459812.html

到了这里,关于Java empty、null、blank 还傻傻分不清楚?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汽车虚拟ECU和MCU硬件虚拟化,傻傻分不清楚

    目录 1.概述 2.汽车虚拟ECU 3.汽车MCU虚拟化功能 4.小结 近几年,随着智能网联汽车普及,车型的更新迭代速度进一步提升,功能开发工程师希望在能够在硬件成型前验证软件功能,意味着汽车控制器的功能开发也在不断左移。 为此业内出现了对ECU进行虚拟化以加速开发的呼声

    2024年01月25日
    浏览(36)
  • VR、AR、MR、CR,虚拟现实傻傻分不清楚

    感觉不知道什么是VR就OUT了 其实除了VR之外,还有AR、MR、CR等外形类似 技术含量更高的头戴式设备,那么问题来了,这些*R们有哪些区别?   vr是由美国VPL公司创建人拉尼尔(Jaron Lanier)在20世纪80年代初提出的。其具体内涵是:综合利用计算机图形系统和各种现实及控制等接口

    2024年02月08日
    浏览(29)
  • 数据中台、数据平台、数据湖、数据仓库傻傻分不清楚?带你一文理清

    随着数字经济蓬勃发展,数字化转型步伐不断加快,大数据技术的不断更新与迭代,数据技术加速创新融合应用,在数字化发展的不同阶段,数据管理工具历经了从数据库、数据仓库、数据集市与数据湖,再到大数据平台与如今的数据中台的发展历程。大数据平台、数据湖、

    2024年04月26日
    浏览(29)
  • 【Mysql 存储过程 Or 存储函数 傻傻分不清? 】

    MySQL的存储函数(自定义函数)和存储过程都是用于存储SQL语句的。但是什么时候用什么呢?是不是总是傻傻的分不清? 本文来详细的讲一下存储函数 和存储过程 ,以后再也不会迷糊。 MySQL的存储过程和函数都是一系列SQL语句的集合,调用时一次性执行这些SQL语句。但是它

    2024年02月09日
    浏览(28)
  • 迷不迷糊?前后端、三层架构和MVC傻傻分不清

    现在的项目都讲究前后端分离,那到底什么是前后端,前后端和以前的MVC以及三层架构啥关系呢?今天就这个问题展开一下,方面后面的学习,因为前面讲的jsp、servlet和javabean根据实例,基本上有一个框架的理解了,谁处理什么业务也大概清楚了,而且也提到了MVC这个东西,

    2024年03月08日
    浏览(39)
  • SAS硬盘和SATA硬盘傻傻分不清?不懂的看这里

    一、SAS SSD与SATA SSD的主要差异: 01 接口形态的差异 SAS(Serial Attached SCSI)即串行连接SCSI,和SATA(Serial ATA)相同,采用串行技术以获得更高的传输速度。SAS 具备2对收发通道,而SATA 仅有1对收发通道, SAS的接口技术可以向下兼容SATA,但SATA不可以反向兼容SAS接口。 SAS接口的设

    2024年02月04日
    浏览(54)
  • VR和AR傻傻分不清,一句话给你讲明白。

    不说废话,直接说结论,虚拟现实(Virtual Reality,VR)和增强现实(Augmented Reality,AR)。如果现实是A,虚拟是B,那么VR=B,AR=A+B,就这简单,不走弯弯绕,有兴趣的的往下看。 虚拟现实(Virtual Reality,VR)和增强现实(Augmented Reality,AR)是两种不同的技术和体验,它们在现实

    2024年02月22日
    浏览(40)
  • 让我看看,还有谁分不清楚GPT和Chat GTP

            GPT(Generative Pre-trained Transformer)是由OpenAI推出的一种基于Transformer的自然语言处理模型,它是在大规模的无监督语言预训练下,使用有监督微调的方式来完成各种自然语言处理任务的。GPT的训练数据主要来源于互联网上的大量文本,包括维基百科、新闻报道、小说等

    2024年02月11日
    浏览(26)
  • java.lang.IllegalArgumentException: Cannot pass null or empty values to constructor at org.springf

      java.lang.IllegalArgumentException: Cannot pass null or empty values to constructor     at org.springframework.security.core.userdetails.User.init(User.java:113)     at org.springframework.security.core.userdetails.User$UserBuilder.build(User.java:535)     at com.example.mz.spingsecurity_jwt_deepstudy.SpingsecurityJwtDeepstudyApplicationTests.tes

    2024年02月04日
    浏览(35)
  • Django的数据库操作模型的字段参数blank和null有什么区别?什么叫表单验证?

    在Django的数据库操作模型中,字段参数 blank 和 null 用于定义模型字段的验证规则和数据库约束。它们的区别如下: blank :这个参数用于验证表单数据的有效性。当字段的 blank 参数设置为 True 时,表明该字段可以为空值或者不填写任何内容,不会触发验证错误。换句话说,

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包