Java 标准类库全解析:从基础工具到集合框架
·
一、前言
Java 的标准类库是开发的 “武器库”,从字符串处理、正则表达式,到包装类、系统工具类,再到日期时间、随机数、集合框架,这些工具类覆盖了日常开发 90% 的基础场景。本章我们系统梳理这些核心类库,帮你打通 Java 基础工具的任督二脉。
二、正则表达式:文本匹配的利器
1. 核心用法
Java 中使用Pattern和Matcher类实现正则匹配,步骤如下:
- 编译正则模式:
Pattern p = Pattern.compile("正则表达式"); - 创建匹配器:
Matcher m = p.matcher("待匹配字符串"); - 执行匹配:
boolean isMatch = m.matches();
2. 实战案例
- 手机号校验:匹配以
1开头,第二位为3/4/5,后接 9 位数字的手机号:java
Pattern p = Pattern.compile("^1[3-5]+\\d{9}$"); - IP 地址校验:匹配 IPv4 地址,每个段为
0-255的数字:java
Pattern p = Pattern.compile("([1-2]?\\d{0,2}\\.){3}[1-2]?\\d{0,2}");
三、数据类型包装器类:基本类型的对象化
1. 包装类与自动装箱 / 拆箱
Java 为 8 种基本类型提供了对应的包装类:
表格
| 基本类型 | 包装类 |
|---|---|
| int | Integer |
| char | Character |
| boolean | Boolean |
| byte | Byte |
| short | Short |
| long | Long |
| float | Float |
| double | Double |
自动装箱 / 拆箱:Java 会自动完成基本类型与包装类的转换:
java
Integer i = 123; // 自动装箱(int → Integer)
int j = i; // 自动拆箱(Integer → int)
2. 常用方法
parseInt(String s):字符串转 inttoString():包装类转字符串toBinaryString(int i):转二进制字符串MAX_VALUE/MIN_VALUE:获取类型的最大 / 最小值
四、System 类:系统级工具集
1. 核心功能
- 记录程序运行时间:
currentTimeMillis()获取当前毫秒数,计算代码段耗时:java
long start = System.currentTimeMillis(); // 执行代码 long end = System.currentTimeMillis(); System.out.println("耗时:" + (end - start) + "ms"); - 数组复制:
arraycopy()实现数组高效拷贝:java
System.arraycopy(src, srcPos, dest, destPos, length); - 标准输入 / 输出:
System.in/System.out
五、Math 与 Random:数学计算与随机数
1. Math 类
提供常用数学静态方法:
- 取整:
ceil()向上取整、floor()向下取整、round()四舍五入 - 三角函数:
sin()/cos()/asin() - 指数对数:
exp()/log()/pow() - 常量:
Math.PI(圆周率)、Math.E(自然常数) - 随机数:
Math.random()生成[0,1)的随机浮点数
2. Random 类
比Math.random()更灵活的随机数工具:
java
Random r = new Random(202208); // 指定种子,相同种子生成相同序列
int num = r.nextInt(10); // 生成[0,10)的随机整数
double gauss = r.nextGaussian(); // 高斯分布随机数
六、日期时间工具类
1. 旧版 Date 类
Date():创建当前时间对象Date(long millis):根据毫秒数创建时间- 缺点:线程不安全、方法设计不友好
2. 新版java.time包(JDK8+)
- LocalDateTime:本地日期时间,不含时区信息
java
LocalDateTime now = LocalDateTime.now(); // 获取当前时间 LocalDateTime future = now.plusYears(30).plusDays(100); // 时间计算 - ZonedDateTime:带时区的日期时间
- DateTimeFormatter:日期格式化与解析
java
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"); String formatTime = now.format(dtf); // 时间转字符串 LocalDateTime parseTime = LocalDateTime.parse("2022年08月17日 13时54分39秒", dtf); // 字符串转时间 - Instant:时间线上的瞬时点,用于
Date与LocalDateTime的转换
七、Java 集合框架:数据存储的瑞士军刀
1. 集合接口体系
Iterable:支持 for-each 循环,获取迭代器Collection:集合根接口,定义add()/remove()/contains()等通用方法List:有序、可重复集合(ArrayList/LinkedList/Vector/Stack)Set:无序、无重复集合(HashSet/TreeSet/LinkedHashSet)Queue:先进先出队列(ArrayDeque/PriorityQueue)Deque:双向队列,支持两端操作Map:键值对集合(HashMap/TreeMap/Hashtable/Properties)
2. List 接口实现类
- ArrayList:动态数组,查询快、增删慢,非线程安全
- LinkedList:双向链表,增删快、查询慢
- Vector:线程安全的动态数组,性能略差
- Stack:继承
Vector,实现后进先出栈
3. Set 接口实现类
- HashSet:哈希表实现,无序、无重复,允许 null 元素
- TreeSet:红黑树实现,按自然顺序排序,支持
lower()/higher()/pollFirst()等方法 - LinkedHashSet:有序的 HashSet,保留插入顺序
4. Queue 与 Deque 接口
- ArrayDeque:基于数组的双向队列,性能优于
LinkedListjava
Deque<Character> deque = new ArrayDeque<>(); deque.offerLast('A'); // 队尾添加 deque.pollFirst(); // 队首取出 deque.offerFirst('B');// 队首添加 deque.pollLast(); // 队尾取出
5. Map 接口实现类
- HashMap:哈希表实现,无序键值对,非线程安全
- TreeMap:红黑树实现,按键升序排序
- Hashtable:线程安全的哈希表,不允许 null 键 / 值
- LinkedHashMap:有序的 HashMap,保留插入顺序
6. 迭代器与遍历
Iterator:单向遍历,支持hasNext()/next()/remove()ListIterator:双向遍历,支持previous()/set()/add()java
ListIterator<Character> litr = list.listIterator(); while (litr.hasNext()) { char c = litr.next(); litr.set(Character.toLowerCase(c)); // 修改元素 } while (litr.hasPrevious()) { System.out.print(litr.previous() + " "); // 反向遍历 }
八、学习总结
- 正则表达式:核心是
Pattern+Matcher,用于文本匹配与校验。 - 包装类:实现基本类型的对象化,支持自动装箱 / 拆箱,提供类型转换方法。
- System 类:提供系统级工具,如时间计算、数组复制。
- Math/Random:数学计算与随机数生成,满足不同场景的随机需求。
- 日期时间:优先使用 JDK8 + 的
java.time包,线程安全且 API 友好。 - 集合框架:
List适合有序可重复数据,ArrayList优先使用;Set适合去重场景,TreeSet支持排序;Map适合键值对存储,HashMap是首选;- 迭代器是遍历集合的通用方式,
ListIterator支持双向操作。
更多推荐
所有评论(0)