字符串缓冲区和正则表达式
字符串缓冲区(StringBuffer 和 StringBuilder)
什么是字符串缓冲区?
缓冲区(Buffer):临时存储数据的一块区域。
字符串缓冲区:一种可变字符串序列,用于处理频繁修改的字符串。
Java中有两种代表:StringBuffer
和 StringBuilder
。
String、StringBuffer、StringBuilder 对比表:
特性 | String(不可变) | StringBuffer(可变,线程安全) | StringBuilder(可变,非线程安全) |
---|---|---|---|
可变性 | 不可变字符串 | 可变字符串 | 可变字符串 |
线程安全 | 是 | 是 | 否 |
性能 | 最慢 | 中等 | 最快(适合单线程) |
用途 | 字符串常量 | 多线程中频繁操作字符串 | 单线程中频繁操作字符串 |
StringBuffer常见操作:
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位数字 |
常见使用
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+ 等 | 表单校验、字符串搜索、数据提取 |