Java中StringUtils与CollectionUtils和ObjectUtil概念讲解

目录
  • 一.解析
    • 概念
      • StringUtils概念
      • CollectionUtils概念
      • ObjectUtil概念
  • 二.区别
  • 三.总结

一.解析

概念

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.看情况而定, 有时我们的对象是空的时候有时这些方法有时会失效, 这是我们需要找寻其他的方法来进行非空判断, 避免"空指针异常"

到此这篇关于Java中StringUtils与CollectionUtils和ObjectUtil概念讲解的文章就介绍到这了,更多相关Java StringUtils内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java objectUtils 使用可能会出现的问题

    目录 objectUtils使用可能会出现的问题 例如 推荐使用 判断对象内容是否为空ObjectUtils工具类 objectUtils使用可能会出现的问题 当一个类没有实现toString方法的时候,objectUtils会通过调用object的toString方法对对象实例化,所以objectUtils.isEmpty可能会对为空的对象返回false 例如 String s1 = ObjectUtils.identityToString(null); String s2 = ObjectU

  • java拓展集合工具类CollectionUtils

    拓展集合工具类CollectionUtils,供大家参考,具体内容如下 package com.demo.utils; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.uti

  • java自定义封装StringUtils常用工具类

    自定义封装StringUtils常用工具类,供大家参考,具体内容如下 package com.demo.utils; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 字符串操作工具类 * @author dongyangyang * @Date 2016/12/28 23:12 * @Version 1.0 * */ public class StringUtils { /** * 首字

  • Java StringUtils字符串分割转数组的实现

    我们在日常开发时会经常遇到将一个字符串按照指定的字符进行分割. 这时,我们往往会想到使用str.split(","),进行处理得到分割后的数组. 然而, 使用split()方法在分割特殊的字符时是需要转移的.如小数点"." 下面我为大家推荐一种可以无需转义,即可分割的方法. 使用 org.springframework.util.StringUtils 中的 delimitedListToStringArray(str,delimiter) 进行测试 public

  • Java中StringUtils与CollectionUtils和ObjectUtil概念讲解

    目录 一.解析 概念 StringUtils概念 CollectionUtils概念 ObjectUtil概念 二.区别 三.总结 一.解析 概念 StringUtils概念 StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是

  • Java中StringUtils工具类进行String为空的判断解析

    判断某字符串是否为空,为空的标准是str==null或str.length()==0 1.下面是StringUtils判断是否为空的示例: StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格作非空处理 StringUtils.isEmpty(" ") = fals

  • Java中难理解的四个概念

    前言 Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑. 所以,在这篇文章里,会介绍四个 Java 中最难理解的四个概念,去帮助开发者更清晰的理解这些概念: 匿名内部类的用法 多线程 如何实现同步 序列化 匿名内部类 匿名内部类又叫匿名类,它有点像局部类(Local Class)或者内部类(Inner Class),只是匿名内部类没有名字,我们可以同时声明并实例化一个匿名内部类. 一个匿名内部类仅适用

  • Java中的线程生命周期核心概念

    目录 Java多线程 Java中线程的生命周期 NEW Runnable Blocked Waiting Timed Waiting Terminated 结论 前言: 在本文中,我们将详细讨论Java中的一个核心概念——线程的生命周期.我们将使用一个快速的图解,当然还有实用的代码片段来更好地理解线程执行期间的这些状态. Java多线程 在Java语言中,多线程是由线程的核心概念驱动的.线程在其生命周期中会经历各种状态: Java中线程的生命周期 java.lang.Thread类包含一个静态枚

  • Java中4种经典限流算法讲解

    目录 限流是什么? 常见的限流算法 固定窗口限流算法 滑动窗口限流算法 漏桶算法 令牌桶算法 最近,我们的业务系统引入了Guava的RateLimiter限流组件,它是基于令牌桶算法实现的,而令牌桶是非常经典的限流算法.本文将跟大家一起学习几种经典的限流算法. 限流是什么? 维基百科的概念如下: In computer networks, rate limiting is used to control the rate of requests sent or received by a net

  • java中volatile不能保证线程安全(实例讲解)

    今天打了打代码研究了一下java的volatile关键字到底能不能保证线程安全,经过实践,volatile是不能保证线程安全的,它只是保证了数据的可见性,不会再缓存,每个线程都是从主存中读到的数据,而不是从缓存中读取的数据,附上代码如下,当synchronized去掉的时候,每个线程的结果是乱的,加上的时候结果才是正确的. /** * * 类简要描述 * * <p> * 类详细描述 * </p> * * @author think * */ public class Volatil

  • Java中线程上下文类加载器超详细讲解使用

    目录 一.什么是线程上下文类加载器 1.1.重要性 1.2.使用场景 二.ServiceLoader简单介绍 三.案例 3.1.使用ServiceLoader加载mysql驱动 3.2.Class.forName加载Mysql驱动 3.2.1.com.mysql.jdbc.Driver 3.2.2.java.sql.DriverManager初始化 3.2.3.调用DriverManager的registerDriver方法 3.2.4.执行DriverManager.getConnection

  • Java中ArrayList与顺序表的概念与使用实例

    目录 前言 泛型(Generic) 泛型的引入 泛型的基本概念 包装类(Wrapper Class) 包装类的引入 基本数据类型与包装类的对应关系 ArrayList与顺序表 ArrayList简介 ArrayList使用 ArrayList的构造 ArrayList常见方法 ArrayList的遍历 总结 前言 通过前面的博客我们已经大致了解了关于Java的基本知识,而下面的几篇博客我们着重开始对于数据结构的知识进行学习,这篇博客我们就了解关于顺序表和ArrayList的相关知识,从名字上我们

  • JAVA中反射机制和模块化的深入讲解

    目录 一.类加载 1.1类加载描述 1.2类的加载 1.3类的连接 1.4类的初始化 1.4.1类初始化的作用 1.4.2初始化步骤 1.4.3类的初始化时机 二.反射 2.1反射的概述 2.2获取Class类对象的三种方式 2.3反射获取构造方法 2.4反射获取成员变量 2.5反射获取成员方法 2.6反射的案例 2.6.1反射练习之越过泛型检查 2.6.2运行配置文件中指定类的指定方法 三.模块化 3.1模块化概述 ​​​​​​​​​​​​​​3.2模块化使用 3.3模块化的基本使用 总结 一

  • JAVA中Comparable接口和自定义比较器示例讲解

    自然排序 TreeSet集合在存储数据时有一定的顺序,它会将一些数据进行比较,比较调用的是comparaTo()方法,该方法是在Comparable中定义的,自然排序要求TreeSet集合中存储的数据必须实现Comparable接口,并且重写ComparaTo()方法 public class 自然排序 { public static void main(String[] args) { //定义一个TreeSet集合 TreeSet treeSet = new TreeSet(); Teach

随机推荐