1. Java常用类概述
Java作为一门成熟的面向对象编程语言,其强大的类库支持是开发者高效编程的基础。在实际开发中,熟练掌握常用类的使用能显著提升编码效率和质量。本章将重点解析Java开发中最核心的几类工具类,包括字符串处理、集合框架、日期时间操作等实用工具。
提示:Java类库的掌握程度往往直接影响开发效率,建议通过实际编码练习来巩固理论知识
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 字符串处理类
2.1 String类的核心特性
String是Java中最基础也是最常用的类之一,用于表示不可变的字符序列。其底层实现采用final修饰的char数组,这种不可变性带来了线程安全的特性,但也意味着每次修改都会创建新对象。
java复制String str1 = "Hello"; // 字符串常量池方式
String str2 = new String("Hello"); // 堆内存新建对象
这两种创建方式的区别在于:
- 常量池方式会先检查池中是否存在相同内容
- new方式强制在堆中创建新对象
- 常量池方式更节省内存但可能引发线程安全问题
2.2 StringBuilder与StringBuffer
对于频繁修改字符串的场景,StringBuilder和StringBuffer是更好的选择:
| 特性 | StringBuilder | StringBuffer |
|---|---|---|
| 线程安全 | 否 | 是 |
| 性能 | 高 | 中等 |
| 适用场景 | 单线程环境 | 多线程环境 |
java复制StringBuilder sb = new StringBuilder();
sb.append("Java");
sb.insert(0, "Hello ");
System.out.println(sb.toString()); // 输出:Hello Java
注意:在循环体内拼接字符串时,务必使用StringBuilder替代"+"操作符,否则会产生大量临时对象
3. 集合框架类
3.1 List接口及其实现
List是有序集合的代表,常用实现类包括:
- ArrayList:基于动态数组实现,随机访问快(O1),但插入删除慢(On)
- LinkedList:基于双向链表实现,插入删除快(O1),但随机访问慢(On)
- Vector:线程安全的ArrayList,但性能较差
java复制List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add(0, "Hello"); // 支持指定位置插入
3.2 Map接口及其实现
Map用于存储键值对,主要实现有:
- HashMap:基于哈希表,允许null键值,非线程安全
- Hashtable:线程安全的HashMap,但不允许null
- LinkedHashMap:保持插入顺序的HashMap
- TreeMap:基于红黑树实现的有序Map
java复制Map<String, Integer> map = new HashMap<>();
map.put("Java", 1995);
map.computeIfAbsent("Python", k -> 1991); // Java8新特性
4. 日期时间类
4.1 传统Date与Calendar
Java8之前的日期处理主要依赖Date和Calendar类:
java复制Date now = new Date(); // 表示当前时间
Calendar cal = Calendar.getInstance();
cal.set(2023, Calendar.JUNE, 15); // 月份从0开始
注意:Date的月份从0开始、年份从1900开始等设计缺陷,导致代码可读性差
4.2 Java8时间API
Java8引入的java.time包解决了旧API的诸多问题:
- Instant:时间戳
- LocalDate:不含时间的日期
- LocalTime:不含日期的时间
- LocalDateTime:日期+时间
- ZonedDateTime:带时区的日期时间
java复制LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1990, Month.JUNE, 15);
Period period = Period.between(birthday, today); // 计算时间间隔
5. 数学运算类
5.1 Math类的常用方法
Math类提供基本的数学运算功能:
java复制double pi = Math.PI;
int max = Math.max(10, 20); // 返回较大值
double sqrt = Math.sqrt(16); // 平方根
double random = Math.random(); // [0,1)随机数
5.2 精确计算BigDecimal
当需要精确小数运算时,应使用BigDecimal:
java复制BigDecimal d1 = new BigDecimal("0.1");
BigDecimal d2 = new BigDecimal("0.2");
BigDecimal sum = d1.add(d2); // 0.3,不会出现浮点精度问题
重要:金融计算等场景必须使用BigDecimal,禁止使用double/float
6. 系统相关类
6.1 System类实用方法
System类提供系统级操作方法:
java复制long start = System.currentTimeMillis(); // 获取毫秒时间戳
System.arraycopy(src, srcPos, dest, destPos, length); // 数组拷贝
System.getProperty("java.version"); // 获取系统属性
6.2 Runtime类
Runtime类允许与JVM运行时环境交互:
java复制Runtime rt = Runtime.getRuntime();
rt.availableProcessors(); // 可用处理器核心数
rt.totalMemory(); // JVM总内存
Process process = rt.exec("notepad.exe"); // 执行外部程序
7. 包装类与自动装箱
Java为每个基本类型提供了对应的包装类:
| 基本类型 | 包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
自动装箱/拆箱示例:
java复制Integer i = 10; // 自动装箱
int n = i; // 自动拆箱
注意:包装类对象间的比较应使用equals()而非"==",因为"=="比较的是引用而非值
8. 异常处理类
8.1 异常类体系
Java异常体系主要分为:
- Error:系统级错误,通常无法恢复
- Exception:可处理的异常
- RuntimeException:非受检异常
- 其他Exception:受检异常
8.2 自定义异常
通过继承Exception类可创建自定义异常:
java复制class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
void test() throws MyException {
throw new MyException("自定义异常");
}
9. 输入输出类
9.1 文件操作
File类提供文件系统操作:
java复制File file = new File("test.txt");
file.exists(); // 判断文件是否存在
file.length(); // 获取文件大小
file.listFiles(); // 列出目录内容
9.2 IO流体系
Java IO流主要分为:
- 字节流:InputStream/OutputStream
- 字符流:Reader/Writer
- 缓冲流:BufferedInputStream等
- 转换流:InputStreamReader等
java复制try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} // try-with-resources自动关闭流
10. 实用工具类
10.1 Arrays类
Arrays提供数组操作工具方法:
java复制int[] arr = {3,1,4,2};
Arrays.sort(arr); // 排序
int index = Arrays.binarySearch(arr, 3); // 二分查找
Arrays.fill(arr, 0); // 填充数组
10.2 Collections类
Collections提供集合操作工具方法:
java复制List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,2,3);
Collections.sort(list);
Collections.reverse(list);
Collections.shuffle(list); // 随机打乱
在实际开发中,合理选择和使用这些常用类可以显著提升代码质量和开发效率。建议通过实际项目练习来加深理解,同时关注Java版本更新带来的新特性。
