Java中的String、StringBuffer、StringBuilder区别以及Java之StringUtils的用法

时间:2023-03-08 15:41:19

1、String、StringBuffer、StringBuilder的区别

  String是Java中基础类型,是immutable类(不可变)的典型实现,利用string进行拼接是会产生过多无用对象。

  StringBuffer就是为解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,可以将字符串添加到已有序列中的末尾或者定位置。

  StringBuilder与StringBuffer本质上没有什么区别,只是除去了线程安全那部分。

(1)在字符串不经常发生变化的业务场景优先使用String(代码更清晰简洁)。如常量的声明,少量的字符串操作(拼接,删除等)。

(2)在单线程情况下,如有大量的字符串操作情况,应该使用StringBuilder来操作字符串。不能使用String"+"来拼接而是使用,避免产生大量无用的中间对象,耗费空间且执行效率低下(新建对象、回收对象花费大量时间)。如JSON的封装等。

(3)在多线程情况下,如有大量的字符串操作情况,应该使用StringBuffer。如HTTP参数解析和封装等。

2、StringUtils 方法的操作对象是 Java.lang.String 类型的对象

方法如下:

  (1) public static boolean isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0

    例如:

      StringUtils.isEmpty(null) = true
      StringUtils.isEmpty("") = true
      StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格作非空处理
      StringUtils.isEmpty("   ") = false
      StringUtils.isEmpty("bob") = false

  (2)public static boolean isNotEmpty(String str) 判断某字符串是否非空,等于 !isEmpty(String str)

  (3)public static boolean isBlank(String str) 判断某字符串是否为空或长度为0或由空白符(whitespace) 构成
  (4)public static boolean isNotBlank(String str) 判断某字符串是否不为空且长度不为0且不由空白符(whitespace) 构成,等于 !isBlank(String str)

 具体方法见链接:https://blog.****.net/weixin_42290280/article/details/82591161