字符串缓冲区(StringBuffer 和 StringBuilder)
什么是字符串缓冲区?
缓冲区(Buffer):临时存储数据的一块区域。
字符串缓冲区:一种可变字符串序列,用于处理频繁修改的字符串。
Java中有两种代表:StringBuffer
和 StringBuilder
。
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+ 等 |
表单校验、字符串搜索、数据提取 |