Java中StringUtils与CollectionUtils和ObjectUtil概念讲解
作者:十年(Sugar) 发布时间:2023-11-29 07:45:38
一.解析
概念
StringUtils概念
StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)。
除了构造器,StringUtils 中一共有130多个方法,并且都是 static 的,所以我们可以这样调用 StringUtils.xxx()
CollectionUtils概念
CollectionUtils是日常经常会用到的一个工具类,在包org.apache.commons.collections中。
目前最常用到的两个方法是CollectionUtils.isEmpty()以及CollectionUtils.isNotEmpty()。
ObjectUtil概念
ObjectUtils工具类会尝试优雅的处理null输入,对于空输入通常不会抛出异常,每个方法都更详细的记录其行为。在标准的应用程序中ObjectUtils类不应该被实例化。
二.区别
1.StringUtils和 CollectionUtils分别用来判断字符串和集合,ObjectUtil用来判断对象
2.想要字符串是否为空,先要了解“” 和null的区别
null 是没有地址的,可以理解为空指针。当对象在构造器初始化时,如果没有被赋予初始值,那么会默认赋值为 null。
“”空字符串是一个 String 对象是有地址的,只是内容是空。
isEmpty() 和 isBlank() 区别在于 isEmpty() 多了对于空格的判断,如果字符串只包含有空格,isEmpty()判定是非空的,而 isBlank() 判断空格依然是空字符串
StringUtils代码测试
String s1=null;
String s2="";
System.out.println("s1:"+s1+":"+StringUtils.isEmpty(s1))
System.out.println("s2:"+s2+":"+StringUtils.isEmpty(s2))
System.out.println("s1:"+s1+":"+StringUtils.isBlank(s1))
System.out.println("s2:"+s2+":"+StringUtils.isBlank(s2))
看结果
3.判断集合是否为空,也需要了解size==0和null
null 是没有地址的,可以理解为空指针。当对象在构造器初始化时,如果没有被赋予初始值,那么会默认赋值为 null。
size==0表示集合已经指向一个地址,但是指向的对象中没有元素。
看代码
List<String> list=new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
if(CollectionUtils.isNotEmpty(list)){
System.out.println("有值")
}else{
System.out.println("无值")
}
结果
4.同样的,判断对象是否为空,也分为地址为空和值为空,如果地址为空,ObjectUtil.isEmpty结果为true,值为空结果为false
这里需要创建实体类这个步骤省去了直接上代码
user user=new User()
user userDto= null;
System.out.println("user:"+Object.isEmpty(user));
System.out.println("userDto:"+Object.isEmpty(userDto));
看结果
三.总结
1.StringUtils多用来判读字符串字段,ObjectUtil多用来判断对象,CollectionUtils多用来判断集合
2.看情况而定, 有时我们的对象是空的时候有时这些方法有时会失效, 这是我们需要找寻其他的方法来进行非空判断, 避免"空指针异常"
来源:https://blog.csdn.net/m0_61682705/article/details/127599772


猜你喜欢
- 本文实例讲述了Android使用selector修改TextView中字体颜色和背景色的方法。分享给大家供大家参考,具体如下:android
- 前言学习了关于集合类的知识,我们可以做一个小项目来加深对集合类知识的学习!一、项目要求代码实现,一副扑克牌(不包括大小王)的购买、打乱、发牌
- 最近学习了一下seata,由于nacos现在也挺火,于是学习了seata注册到nacos,然后集成springcloud1.nacos配置(
- 前言: 哲学老师说,看待事物无非是了解它是什么,为什么,怎么做所以,首先,我们先了解一下什么是“内存泄漏”摘自百度的一段话:用动态存储分配函
- 一、文件的编码package com.study.io;/*** 测试文件编码*/public class EncodeDemo {/***
- 本文实例讲述了C#中累加器函数Aggregate用法。分享给大家供大家参考。具体如下:var shouldExclude = false;v
- 一、Mybatis1、mybatis-config.xml<?xml version="1.0" encoding
- 引言翻译自:towardsdev.com/mastering-e…Kotlin 作为现代的、强大的编程语言,可以给开发
- 有时我们会使用@Value自动注入,同时也存在注入到集合、数组等复杂类型的场景。这都是方便写 bug 的场景。1 @Value未注入预期值在
- 上篇文章中,我们讲了在 Spring Security 中如何踢掉前一个登录用户,或者禁止用户二次登录,通过一个简单的案例,实现了我们想要的
- SearchView是android系统中内置的一个搜索框组件,可以很方便在添加在用户界面之上,但是也带来了一些问题,那就是searchvi
- 本文实例为大家分享了Java实现五子棋游戏的具体代码,供大家参考,具体内容如下一、功能分析五子棋的实现还是较为简单的,通过下期的流程我们可以
- 最近做的一个小项目中有这样的需求:整个项目有一份config.json保存着项目的一些配置,是存储在本地文件的一个资源,并且应用中存在读写(
- 本文以C#为例讲解木马程序的实现过程。要实现木马服务的程序,主要实现以下几个功能:后台的运行(隐藏技术),控制码的接收与注册表的修改,下面就
- 1、队列的基本概念队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进
- /// 除去所有在HTML元素中标记 public static string&nbs
- 本文实例讲述了Java设计模式之抽象工厂模式。分享给大家供大家参考,具体如下:具体工厂类:生产创建某一类具体产品对象。抽象产品类可以使用接口
- Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 1.方法声明时使
- http interface从 Spring 6 和 Spring Boot 3 开始,Spring 框架支持将远程 HTTP 服务代理成带
- 整理文档,搜刮出一个android 通过MediaRecorder实现简单的录音示例,稍微整理精简一下做下分享。MainActivitypa