Java字符串:String、StringBuilder、StringBuffer和正则表达式

不可变String

String对象不可变,每一次“+”都会产生一个新的String对象,同时,变更的只是引用。

对比:空字符串和null
对比 空字符串 null
区别 在堆内存中存在,有内存空间,但没有内容 在堆内存中不存在,无法调用方法

重载“+”与StringBuilder

在使用“+”时,会调用StringBuilder来进行连接。

  StringBuilder result = new StringBuilder();
  for (int i = 0; i < values.length; i ++) {
      result.append(values[i]);
  }
对比:String、StringBuilder、StringBuffer
String(“+”) StringBuilder StringBuffer
区别 只读,不可变 可写,单线程环境下使用,效率更高 可写,多线程被synchronized修饰,线程安全
使用场景 少量字符串 频繁、大量,局部变量,单线程,不涉及线程安全 全局变量,多线程支持

正则表达式

String类中使用到正则表达式的方法有:
matches、replaceAll、replaceFirst、split。

对比:replaceAll、replaceFirst、replace
方法 replaceAll replaceFirst replace
区别 正则表达式 正则表达式 普通参数
功能 替换全部匹配值 替换第一个匹配值 替换所有相同参数
常用元字符 功能
. 匹配除换行符以外的任意字符
\w 匹配字母、数字或下划线
\s 匹配空白符
\S 匹配非空白符
\d 匹配数字
\D 匹配非数字
^ 匹配字符串的开始
$ 匹配字符串的结束
常用限定符 功能
* 重复0次或多次
+ 重复1次或多次
重复0次或1次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

注1:若查询元字符或限定符本身,需使用转义字符“\”。
注2:“[]”表示匹配其中的任何一个即可;“|”表示两种不同规则进行匹配

正则表达式的一般用法

import java.util.regex;    //引入包

    Pattern p=Pattern.compile(regex);      //regex:正则表达式
    Matcher m=p.matcher(string);       //string:匹配字符串
    m.matches();      //return boolean

(参考资料:Pattern

量词:匹配模式
匹配模式 贪婪型 勉强型 占有型
功能 最大匹配,匹配多次直到最大匹配 最小匹配,尽可能少 完全匹配,只执行一次
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容