【六袆 - apache】commons-lang & commons-lang3 的区别;CharSequence& String的区别;StringUtils的工具类

官方地址:https://commons.apache.org/proper/commons-lang/

在这里插入图片描述
about commons-lang3 : https://commons.apache.org/proper/commons-lang/article3_0.html

CharSequence(inteface)& String (class)

  • 类层级结构

    • CharSequence 是一个接口,定义了表示字符序列的通用操作,包括获取字符长度、获取指定位置的字符等。
    • StringCharSequence 接口的一个实现类,它是不可变的字符序列,提供了丰富的字符串操作方法。
  • 可变性

    • CharSequence 表示的字符序列可以是可变的,即可以修改其内容。例如,StringBuilderStringBuffer 都是可变的字符序列,它们实现了 CharSequence 接口。
    • String 是不可变的字符序列,一旦创建就不能修改其中的字符内容。如果需要对字符串进行修改,每次修改都会创建一个新的字符串对象。
  • 使用场景

    • CharSequence 适用于需要处理字符序列的通用情况,可以接受任何实现了该接口的对象作为参数,包括 StringStringBuilderStringBuffer 等。
    • String 适用于需要处理不可变字符串的情况,它提供了丰富的字符串操作方法,例如字符串拼接、截取、替换等

👊 vs equals()

commons-langcommons-lang3 中的 equals 方法在逻辑层面上存在一些区别。下面是对它们的区别进行逐步解释:

  1. commons-lang3equals 方法:

    • 首先,它会检查两个参数 cs1cs2 是否引用同一个对象,即内存地址是否相同。如果相同,直接返回 true,表示两个对象相等。
    • 接下来,它会检查两个参数是否都不为 null。如果其中一个参数为 null,则返回 false,表示两个对象不相等。
    • 如果两个参数都不为 null,则进一步判断它们的长度是否相等。如果长度不相等,返回 false,表示两个对象不相等。
    • 如果长度相等,继续判断两个参数的类型是否都为 String。如果是 String 类型,调用 cs1.equals(cs2) 方法来比较两个字符串是否相等。
    • 如果两个参数的类型不都为 String,则通过逐个比较字符的方式来判断两个字符序列是否相等。如果存在不相等的字符,返回 false,表示两个对象不相等。
    • 如果所有字符都相等,返回 true,表示两个对象相等。
  2. commons-langequals 方法:

    • 首先,它会检查 str1 是否为 null。如果为 null,则检查 str2 是否也为 null。如果两个参数都为 null,返回 true,表示两个对象相等。
    • 如果 str1 不为 null,则调用 str1.equals(str2) 方法来比较两个字符串是否相等。

commons-lang3equals 方法在处理字符序列时更加细致和全面。它考虑了对象引用、长度、类型和字符逐个比较等因素,以确定两个字符序列是否相等。而 commons-langequals 方法则更加简洁,只关注字符串对象的比较,并且使用了短路逻辑来处理 null 值的情况。

💡 综上所述,如果你需要比较字符序列而不仅仅是字符串对象,或者需要更多的灵活性和详细的比较逻辑,推荐使用 commons-lang3equals 方法。如果只需要比较字符串对象,并且希望使用更简洁的代码,可以使用 commons-langequals 方法。

👊 vs isEmpty()

commons-langcommons-lang3 中的 isEmpty 方法在逻辑层面上存在一些区别。下面是对它们的区别进行逐步解释:

  1. commons-lang3isEmpty 方法:

    • 首先,它会检查参数 cs 是否为 null。如果为 null,或者字符序列的长度为 0,即没有任何字符,就返回 true,表示字符序列为空。
    • 如果参数 cs 不为 null,且字符序列的长度不为 0,就返回 false,表示字符序列不为空。
  2. commons-langisEmpty 方法:

    • 它只接受 String 类型的参数,而不是通用的字符序列 CharSequence
    • 首先,它会检查参数 str 是否为 null。如果为 null,或者字符串的长度为 0,就返回 true,表示字符串为空。
    • 如果参数 str 不为 null,且字符串的长度不为 0,就返回 false,表示字符串不为空。

commons-lang3isEmpty 方法更通用,可以接受任意的字符序列类型作为参数,并判断字符序列是否为空。而 commons-langisEmpty 方法只适用于字符串类型,并且使用了短路逻辑来处理 null 值和空字符串的情况。

💡 综上所述,如果你需要判断通用的字符序列是否为空,推荐使用 commons-lang3isEmpty 方法。如果只需要判断字符串是否为空,并且希望使用更简洁的代码,可以使用 commons-langisEmpty 方法。

👊 vs isNotBlank()

commons-langcommons-lang3 中的 isNotBlank 方法在逻辑层面上也存在一些区别。下面是对它们的区别进行逐步解释:

  1. commons-lang3isNotBlank 方法:

    • 它会调用 isBlank 方法来判断字符序列是否为空白。
    • 如果字符序列不为空白(即 isBlank 返回 false),则返回 true,表示字符序列不为空白。
    • 如果字符序列为空白(即 isBlank 返回 true),则返回 false,表示字符序列为空白。
  2. commons-langisNotBlank 方法:

    • 它只接受 String 类型的参数,而不是通用的字符序列 CharSequence
    • 它会调用 isBlank 方法来判断字符串是否为空白。
    • 如果字符串不为空白(即 isBlank 返回 false),则返回 true,表示字符串不为空白。
    • 如果字符串为空白(即 isBlank 返回 true),则返回 false,表示字符串为空白。

commons-lang3isNotBlank 方法更通用,可以接受任意的字符序列类型作为参数,并判断字符序列是否不为空白。而 commons-langisNotBlank 方法只适用于字符串类型,并且使用了短路逻辑来处理 null 值、空字符串和空白字符串的情况。

💡 综上所述,,如果你需要判断通用的字符序列是否不为空白,推荐使用 commons-lang3isNotBlank 方法。如果只需要判断字符串是否不为空白,并且希望使用更简洁的代码,可以使用 commons-langisNotBlank 方法。

👊 vs isNotEmpty()

commons-langcommons-lang3 中的 isNotEmpty 方法在逻辑层面上也存在一些区别。下面是对它们的区别进行逐步解释:

  1. commons-lang3isNotEmpty 方法:

    • 它会调用 isEmpty 方法来判断字符序列是否为空。
    • 如果字符序列不为空(即 isEmpty 返回 false),则返回 true,表示字符序列不为空。
    • 如果字符序列为空(即 isEmpty 返回 true),则返回 false,表示字符序列为空。
  2. commons-langisNotEmpty 方法:

    • 它只接受 String 类型的参数,而不是通用的字符序列 CharSequence
    • 它会调用 isEmpty 方法来判断字符串是否为空。
    • 如果字符串不为空(即 isEmpty 返回 false),则返回 true,表示字符串不为空。
    • 如果字符串为空(即 isEmpty 返回 true),则返回 false,表示字符串为空。

commons-lang3isNotEmpty 方法更通用,可以接受任意的字符序列类型作为参数,并判断字符序列是否不为空。而 commons-langisNotEmpty 方法只适用于字符串类型,并且使用了短路逻辑来处理 null 值和空字符串的情况。

💡 综上所述,如果你需要判断通用的字符序列是否不为空,推荐使用 commons-lang3isNotEmpty 方法。如果只需要判断字符串是否不为空,并且希望使用更简洁的代码,可以使用 commons-langisNotEmpty 方法。

最后附一张VS表

下面是一个简单的表格,用于区分 CharSequenceString 的特点:

特点CharSequenceString
类型层次结构接口具体类
可变性可以是可变的或不可变的不可变
字符内容修改可以修改不可修改
实现类示例StringBuilder、StringBuffer等N/A
使用场景通用字符序列处理不可变字符串处理
方法丰富度较少丰富

选择使用哪个类型取决于具体的需求和场景。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: org.apache.commons commons-lang3-3.1是一个Apache软件基金会中的一个实用程序库。它包含了大量的实用工具类和方法,使Java开发人员可以更快、更方便地编写Java代码。在这个库中,开发人员可以找到很多常用的功能,例如字符串操作、日期和时间处理、随机数生成、数组操作、文件操作、数学计算等等。通过这个库,我们可以快速地实现各种功能,提高我们的开发效率。 下载org.apache.commons commons-lang3-3.1非常简单。可以在Apache官网上进行下载,也可以在Maven中央仓库中下载。只需要将对应的jar包加入到我们的工程中即可使用。通过使用Org.apache.commons commons-lang3-3.1这个工具集,我们可以在Java开发中更加得心应手,更加高效地完成开发任务,为我们的项目赢得更多的成功。 ### 回答2: org.apache.commons commons-lang3-3.1是一个Apache软件基金会提供的开源Java类库,主要提供了一系列通用的工具类和方法,用于字符串处理、日期处理、基本类型转换等常用操作,简化了Java开发过程中的一些常见任务。 下载这个类库可以到Apache官网的下载页面进行下载,并且也可在Maven仓库中通过依赖的方式引入。使用时只需要将其添加到Java项目的classpath中即可。 这个版本的commons-lang3包含了很多实用的工具类和方法,比如StringUtils类可以方便地处理字符串的格式化、剪切、替换、分割等操作;DateUtils类提供了对日期和时间的各种处理,包括格式化、加减、比较等等;ArrayUtils类提供了对数组的各种操作,包括复制、添加、查找等等。这些工具类的使用可以大大简化Java开发的工作量,提高代码的可读性和可维护性。 总的来说,org.apache.commons commons-lang3-3.1是一个非常实用的Java类库,推荐给Java开发者使用。 ### 回答3: org.apache.commons commons-lang3-3.1是一个基于Java语言编写的开源软件库。它包含了一系列通用的工具类、方法和实用函数,可以帮助开发者更加高效地完成各种Java应用程序的开发工作。 这个开源软件库主要包含了字符串处理、文件处理、日期时间处理、随机数生成、对象操作、反射等多个方面的功能模块。在实际开发中,我们可以直接引入这个软件库,并调用其中封装好的方法和函数,来完成一些常规性的编码任务。 org.apache.commons commons-lang3-3.1的下载方式是在Apache官网上进行下载。我们可以在官网上找到相应的下载链接,并选择适用于当前开发环境的版本进行下载。下载后,我们需要将其集成到当前的Java应用程序中,并在代码中引入相关的依赖库和包,才能顺利使用其中的功能模块。 总之,org.apache.commons commons-lang3-3.1是一个常用的Java开源软件库,封装了多种常用的工具类、方法和实用函数,可以大大简化Java程序的开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值