字符串缓冲区和正则表达式

字符串缓冲区(StringBuffer 和 StringBuilder)

什么是字符串缓冲区?

缓冲区(Buffer):临时存储数据的一块区域。

字符串缓冲区:一种可变字符串序列,用于处理频繁修改的字符串。

Java中有两种代表:StringBufferStringBuilder

String、StringBuffer、StringBuilder 对比表:

特性 String(不可变) StringBuffer(可变,线程安全) StringBuilder(可变,非线程安全)
可变性 不可变字符串 可变字符串 可变字符串
线程安全
性能 最慢 中等 最快(适合单线程)
用途 字符串常量 多线程中频繁操作字符串 单线程中频繁操作字符串

StringBuffer常见操作:

java 复制代码
StringBuffer sb = new StringBuffer("Hello");

// 追加内容
sb.append(" World"); // -> Hello World

// 插入内容
sb.insert(5, ",");   // -> Hello, World

// 删除内容
sb.delete(5, 6);     // -> Hello World

// 替换内容
sb.replace(6, 11, "Java"); // -> Hello Java

// 反转内容
sb.reverse(); // -> avaJ olleH

// 转为 String
String str = sb.toString();

正则表达式(Regular Expression)

正则表达式的作用

它是一种匹配字符串的工具,用于查找、校验或替换字符串中的内容。

它常见的符号是

符号 含义 示例
. 匹配任意一个字符 a.c 匹配 abc, a3c
\d 任意一位数字(0-9 \d{3} 匹配三位数字
\w 任意字母数字下划线 \w+ 匹配一个或多个单词字符
\s 空白字符(空格、tab)
^ 匹配行的开头 ^Hello 匹配以 Hello 开头
$ 匹配行的结尾 world$ 匹配以 world 结尾
[] 匹配指定范围内任意一个字符 [abc] 匹配 a 或 b 或 c
` `
* 零个或多个 a* 匹配0个或多个a
+ 一个或多个 a+ 匹配1个或多个a
? 零个或一个 a? 匹配0或1个a
{n} 恰好n个 \d{4} 匹配4位数字

常见使用

java 复制代码
import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String str = "abc123xyz456";

        // 查找所有数字
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(str);

        while (matcher.find()) {
            System.out.println("匹配到数字:" + matcher.group());
        }

        // 验证手机号
        String phone = "13812345678";
        boolean isPhone = phone.matches("1[3-9]\\d{9}");
        System.out.println("手机号格式正确?" + isPhone);
    }
}

总结

主题 关键词 使用场景
字符串缓冲区 StringBuffer, StringBuilder 字符串拼接、频繁修改的字符串
正则表达式 Pattern, Matcher, \\d+ 表单校验、字符串搜索、数据提取
相关推荐
Flittly6 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了6 小时前
Java 生成二维码解决方案
java·后端
人活一口气11 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP13 小时前
Vibe Coding -- 完整项目案例实操
java
荣码13 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing13 小时前
Google第三方授权登录
java·后端·程序员
明月光81813 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑1 天前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java