JavaAPI — 包装类与正则表达式
介绍
Java API中的包装类实现了基本数据类型与对象的双向转换,通过自动装箱(如int转为Integer)和拆箱机制简化开发,使基本类型能融入面向对象体系,常用于集合存储、泛型参数等场景。
正则表达式通过Pattern和Matcher类实现强大的文本处理功能,支持字符串匹配、替换、分割等操作。其语法规则(如\d匹配数字、\w匹配字符)结合量词(*、+、?)可精准描述复杂模式,常用于表单验证(邮箱、手机号)、日志解析等场景。两者均属于Java核心工具类,包装类侧重数据类型的对象化封装,正则表达式专注文本模式的抽象表达,共同服务于数据标准化处理需求。开发者通过掌握包装类的类型转换特性和正则表达式的模式编写技巧,可显著提升数据处理效率与代码健壮性。
Java包装类(Wrapper Classes)
Java API包装类(如Integer、Double)将基本类型封装为对象,便于集合操作,支持自动装箱/拆箱,提供类型转换(如parseInt())和常量(如MAX_VALUE),位于java.lang包,实现基本数据面向对象处理。
作用
- 将基本数据类型(如int、char、boolean)封装为对象(如Integer、Character、Boolean)。
- 用于集合(如List<Integer>)、泛型等需要对象类型的场景。
自动装箱(Autoboxing)与拆箱(Unboxing)
- 自动装箱:基本类型 → 包装类(如Integer i = 10;)。
- 自动拆箱:包装类 → 基本类型(如int j = i;)。
- 注意:若包装类对象为null,拆箱时会抛出NullPointerException。
常用方法
字符串转基本类型:
int num = Integer.parseInt("123");boolean flag = Boolean.parseBoolean("true");
基本类型转包装类:
Integer i = Integer.valueOf(100); // 优先使用缓存(-128~127)
比较:
Integer a = 200, b = 200;System.out.println(a.equals(b)); // true(值比较)System.out.println(a == b); // false(对象地址比较)
缓存机制
部分包装类(如Integer)在-128~127范围内缓存对象,提高性能。
正则表达式(Regular Expressions)
Java API正则表达式通过java.util.regex的Pattern和Matcher实现字符串匹配、替换及分割,支持Perl语法规则,提供分组捕获、模式标志等功能,String类内建方法(如matches())简化基础操作。
核心类
- Pattern:编译正则表达式。
- Matcher:执行匹配操作。
基本使用
String regex = "a*b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("aaaaab");
boolean isMatch = matcher.matches(); // true
常见语法
-
元字符:
-
. 任意字符,\d 数字,\w 字母/数字/下划线。
-
^ 开头,$ 结尾,| 或。
-
-
量词:
-
* 0次或多次,+ 1次或多次,? 0或1次,{n} 精确n次。
-
-
分组:() 定义分组,(?:) 非捕获分组。
示例
匹配手机号:
String regex = "^1[3-9]\\d{9}$";boolean isValid = "13812345678".matches(regex); // true
提取数字:
Pattern p = Pattern.compile("\\d+");Matcher m = p.matcher("abc123def456");while (m.find()) {System.out.println(m.group()); // 输出 123, 456}
注意事项
- 转义字符需用双反斜杠(如 \\d 表示数字)。
- 复杂正则可能影响性能,建议预编译 Pattern 对象复用。
- matches()要求完全匹配,find() 查找子串。
常见问题
- 包装类比较:用equals替代=,或先拆箱再比较。
- 正则性能:避免贪婪量词(如 *)导致回溯过多。
- 空指针:确保包装类对象非空再拆箱。
总结
JavaAPI中的包装类与正则表达式是处理基础数据类型和字符串操作的重要工具。包装类如Integer、Double等将基本类型封装为对象,使其能应用于泛型集合等面向对象的场景。自动装箱和拆箱机制在JDK5后实现基本类型与包装类的隐式转换,提升代码简洁性,但需警惕频繁转换引发的性能损耗。
正则表达式通过Pattern和Matcher类实现复杂文本匹配,Pattern.compile()编译正则规则,Matcher通过find()、group()等方法执行匹配和结果提取。元字符如\d(数字)、\w(字母数字下划线)与量词*(0次以上)、+(1次以上)构建匹配逻辑,分组捕获可通过圆括号结合group(index)获取特定片段。String类内建的split()分割、replaceAll()替换等方法底层依赖正则实现,简化常见字符串处理。两者分别支撑着Java类型系统的完整性与文本处理的灵活性,前者解决基本类型在对象语境中的适配问题,后者提供高效精准的字符串模式匹配方案,是开发中不可或缺的核心API。