当前位置: 首页 > news >正文

Java常用类学习(String、StringBuffer、正则、Scanner)

前言

Java开发中,字符串处理、文本匹配是最高频的基础操作。本篇整理 String、StringBuffer、正则表达式、Scanner、StringTokenizer、Pattern&Matcher 全套基础用法,无冗余理论。

一、String 类(不可变字符串

String 是 Java 最常用的类,字符串一旦创建,内容不可修改,所有修改操作都是返回新字符串。

1. 四种创建方式

  
// 1. 直接赋值(推荐,入常量池)
String s1 = "hello java";// 2. new 对象创建
String s2 = new String("hello java");// 3. 字符数组构建
char[] chars = {'J','a','v','a'};
String s3 = new String(chars);// 4. 字节数组构建
byte[] bytes = {97,98,99};
String s4 = new String(bytes);

2. 超常用核心方法

  
String str = "Study Java 2026";// 获取字符串长度
str.length();// 获取指定下标字符
str.charAt(0);// 字符串拼接
str.concat(" Code");// 截取字符串
str.substring(5);
str.substring(0,5);// 查找字符/字符串下标
str.indexOf("Java");
str.lastIndexOf("a");// 替换内容
str.replace("Java","Python");// 大小写转换
str.toUpperCase();
str.toLowerCase();// 去除首尾空格
str.trim();// 判断包含、开头、结尾
str.contains("2026");
str.startsWith("Study");
str.endsWith("2026");// 字符串分割
String[] arr = str.split(" ");

3. 字符串与基本类型互转

基本类型转字符串:

  
int a = 666;
String s1 = String.valueOf(a);
String s2 = "" + a;

字符串转基本类型:

  
String numStr = "999";
int num = Integer.parseInt(numStr);
double d = Double.parseDouble("3.1415");
boolean b = Boolean.parseBoolean("true");

4. 字符串与数组互转

  
// 字符串转字符数组
char[] chs = "java".toCharArray();// 字符数组转字符串
String s = new String(chs);// 字符串转字节数组
byte[] bs = "abc".getBytes();// 字节数组转字符串
String res = new String(bs);

二、StringBuffer 类(可变字符串)

String 不可变,频繁拼接会产生大量垃圾字符串,频繁修改字符串优先用 StringBuffer,线程安全、性能更高。

1. 创建对象

  
// 空缓冲区
StringBuffer sb1 = new StringBuffer();// 指定初始内容
StringBuffer sb2 = new StringBuffer("Java");// 指定初始容量
StringBuffer sb3 = new StringBuffer(100);

2. 核心增删改查方法

  
StringBuffer sb = new StringBuffer("Study");// 末尾追加
sb.append(" Code");// 指定位置插入
sb.insert(0,"2026 ");// 删除区间内容
sb.delete(0,4);// 删除指定下标字符
sb.deleteCharAt(0);// 替换指定区间
sb.replace(0,5,"Java");// 字符串反转
sb.reverse();// 转成String
String res = sb.toString();

三、正则表达式基础

正则用于文本匹配、校验、替换、分割,是处理复杂文本的利器。

1. 常用元字符

\d 代表任意数字
\D 代表非数字
\w 代表字母、数字、下划线
\W 代表非字母数字下划线
\s 代表空白字符
\S 代表非空白字符
. 代表任意所有字符
^ 代表开头
$ 代表结尾

2. 常用量词

?0次或1次

-1次或多次

-0次或多次
{n} 固定n次
{n,} 至少n次
{n,m} n到m次

3. 常用业务正则

手机号:1[3-9]\d{9}
纯数字:^\d+$
纯字母数字下划线:^\w+$

4. String 内置正则用法

  
// 替换所有数字为空
String s1 = "123java456";
String res1 = s1.replaceAll("\\d","");// 根据数字分割字符串
String s2 = "a1b2c3d";
String[] res2 = s2.split("\\d");

四、StringTokenizer 字符串分割

专门用于分割字符串,相比 split 更轻量、适合简单分割场景:

  
String data = "Java,Python,C++,Go";
StringTokenizer st = new StringTokenizer(data, ",");// 循环遍历分割结果
while(st.hasMoreTokens()){System.out.println(st.nextToken());
}

五、Scanner 扫描器类

用于控制台输入读取、字符串解析。

1. 读取控制台输入

  
Scanner sc = new Scanner(System.in);int num = sc.nextInt();
String str = sc.next();
String line = sc.nextLine();

2. 解析字符串数据

  
Scanner sc = new Scanner("10 20 30 40");
while(sc.hasNextInt()){System.out.println(sc.nextInt());
}

六、Pattern 与 Matcher 正则匹配

适合批量提取文本中指定内容,功能强于 String 自带正则:

  
String content = "测试手机号13812345678,备用13966668888";// 编译正则规则
Pattern pattern = Pattern.compile("1[3-9]\\d{9}");
Matcher matcher = pattern.matcher(content);// 循环匹配所有结果
while(matcher.find()){System.out.println("匹配到手机号:" + matcher.group());
}

小结

  1. String 适合少量、不频繁修改的字符串场景;
  2. StringBuffer 适合频繁拼接、修改字符串;
  3. 正则 + Pattern/Matcher 可以解决绝大多数文本处理需求;
  4. Scanner、StringTokenizer 是日常解析数据的常用工具类。
http://www.rkmt.cn/news/1306123.html

相关文章:

  • 徐州:报考中质协六西格玛黑带和绿带指定报考机构推荐 - 众智商学院课程中心
  • 上海:报考中质协六西格玛黑带和绿带指定报考机构推荐 - 众智商学院课程中心
  • 2026 南京租车怎么选?实测南京万山红遍:全场景适配 + 数据过硬 + 口碑扎实 - 小艾信息发布
  • 四川华蔓广告有限公司设计安装施工|PVC板雕刻,KT板,车贴、南充地区一站式制作 - 四川华蔓广告有限公司
  • 团队冲刺第六天
  • 深圳:报考中质协六西格玛黑带和绿带指定报考机构推荐 - 众智商学院课程中心
  • 如何精准选择 GEO 优化运营公司,GEO/AI搜索引擎优化/GEO优化/AI搜索实力优化,GEO优化运营团队口碑推荐 - 品牌推荐师
  • 47.呼和浩特报考CPPM与SCMP,职场进阶优选众智商学院 - 众智商学院课程中心
  • 45.惠州报考CPPM与SCMP,职场进阶优选众智商学院 - 众智商学院课程中心
  • 四川华蔓广告有限公司设计安装施工|易拉宝,X展架,行架租赁、南充地区一站式制作 - 四川华蔓广告有限公司
  • 洛谷 B3634:最大公约数和最小公倍数 ← 更相减损法
  • Cloudflare Pages 部署前端项目构建失败报错怎么查看日志
  • 四川华蔓广告有限公司设计安装施工|警示标识,围挡,展架、南充地区一站式制作 - 四川华蔓广告有限公司
  • 用 Obsidian 管理飞书知识库?这个插件让双向同步成为现实
  • 四川华蔓广告有限公司设计安装施工|门头招牌,发光字,软膜灯箱、南充地区一站式制作 - 四川华蔓广告有限公司
  • 乌鲁木齐:报考中质协六西格玛黑带和绿带指定报考机构推荐 - 众智商学院课程中心
  • 2026年贵阳豆包GEO推广怎么选?5大服务商深度横评与官方对接指南 - 年度推荐企业名录
  • 48.乌鲁木齐报考CPPM与SCMP,职场进阶优选众智商学院 - 众智商学院课程中心
  • 2026年精密机械行业GEO优化服务商选型分析与优质服务商推荐 - 产业观察网
  • 2026年贵阳豆包GEO优化推广怎么选?5大服务商深度对比与避坑指南 - 年度推荐企业名录
  • 2026年贵阳GEO优化推广完全选型指南:5大服务商深度评测 + 避坑手册 - 年度推荐企业名录
  • 2026年宠物用品行业正规GEO优化服务商推荐与企业选型指南 - 产业观察网
  • 2026年南充条幅锦旗、楼顶发光字、户外广告牌行情走势及厂家采购指南|四川华蔓广告有限公司 - 四川华蔓广告有限公司
  • 2026年南充PVC板雕刻、KT板、车贴行情走势及厂家采购指南|四川华蔓广告有限公司 - 四川华蔓广告有限公司
  • 洛谷 B3634:最大公约数和最小公倍数 ← 辗转相除法
  • 2026年环保建材行业靠谱AI生成式引擎GEO优化公司选型参考指南 - 产业观察网
  • 学Java第一天
  • 2026 年北京 GEO 服务商综合排行:技术合规与商业价值深度测评 - GEO优化
  • 2026 年长沙 GEO 优化服务商排名与合规商业价值深度解析 - GEO优化
  • 好吃不踩雷平价川菜推荐!椒爱19.9元辣子鸡太划算 - 速递信息