摘要
本文围绕 Java 开发中最常用的三类基础技术展开:字符串处理、包装类与日期时间处理。重点讲解 String、StringBuilder、StringBuffer 的区别与适用场景,分析 Integer、Double 等包装类的自动装箱、自动拆箱与缓存机制,并结合 JDK 8 之后的日期时间 API,说明如何更规范地完成日期解析、格式化与计算。文中配有结构图、流程图和运行效果图,帮助你建立清晰的知识体系。
第三章:实用进阶类
标题:Java 字符串、包装类与日期处理:开发中最常用的技术点解析
一、本章目标
本章主要解决开发中三类高频问题:
- 字符串拼接、截取、替换、格式化等常见操作
- 包装类与基本类型之间的转换问题
- 日期时间的解析、格式化、比较与计算问题
通过本章内容,你能够理解 Java 基础项目中大量 API 设计背后的原因,也能写出更规范、更易维护的业务代码。
二、字符串处理
字符串是 Java 开发中最常见的操作对象之一。无论是接收用户输入、处理数据库字段、拼接日志,还是生成业务报文,都离不开字符串处理。
1. String 的基本使用
String 是 Java 中表示字符串的核心类。它的常用方法包括:
表格
| 方法 | 作用 |
|---|---|
equals() | 比较字符串内容是否相等 |
length() | 获取字符串长度 |
substring() | 截取子串 |
indexOf() | 查找字符或子串位置 |
replace() | 替换字符或子串 |
split() | 按指定规则分割字符串 |
trim() | 去除首尾空格 |
toUpperCase() | 转为大写 |
toLowerCase() | 转为小写 |
示例代码如下:
java
运行
public class StringDemo {
public static void main(String[] args) {
// 定义原始字符串
String original = " Hello, Java String ";
// 去除首尾空格
String trimmed = original.trim();
System.out.println("去除空格后:" + trimmed);
// 转为大写
String upper = trimmed.toUpperCase();
System.out.println("大写形式:" + upper);
// 截取子串
String sub = trimmed.substring(7);
System.out.println("截取结果:" + sub);
// 替换内容
String replaced = trimmed.replace("Java", "Java 基础");
System.out.println("替换后:" + replaced);
}
}
运行效果:
text
去除空格后:Hello, Java String
大写形式:HELLO, JAVA STRING
截取结果:Java String
替换后:Hello, Java 基础 String
2. String、StringBuilder、StringBuffer 的区别
在 Java 中,字符串拼接常见有三种方式:
StringStringBuilderStringBuffer
它们的主要区别如下:
表格
| 类 | 可变性 | 线程安全 | 性能 | 适用场景 |
|---|---|---|---|---|
String | 不可变 | 安全 | 拼接效率低 | 少量字符串操作 |
StringBuilder | 可变 | 不安全 | 高 | 单线程下频繁拼接 |
StringBuffer | 可变 | 安全 | 较低 | 多线程下频繁拼接 |
String 的不可变性意味着每次拼接都会创建新的字符串对象。如果在循环中大量拼接字符串,会产生较多临时对象,影响性能。
示例代码:
java
运行
public class StringPerformanceDemo {
public static void main(String[] args) {
// 使用 String 拼接,每次都会创建新对象
String str = "";
for (int i = 0; i < 5; i++) {
str += i;
}
System.out.println("String 拼接结果:" + str);
// 使用 StringBuilder 拼接,适合频繁修改
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append(i);
}
System.out.println("StringBuilder 拼接结果:" + sb.toString());
}
}
运行效果:
text
String 拼接结果:01234
StringBuilder 拼接结果:01234

三、包装类
Java 提供了 8 种基本数据类型:byte、short、int、long、float、double、char、boolean。
但很多时候,我们需要将基本类型作为对象使用,例如:
- 存入集合
- 参与泛型运算
- 调用对象相关方法
- 接收可能为
null的数值
这时就需要使用包装类。
1. 八种包装类
表格
| 基本类型 | 包装类 |
|---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2. 自动装箱与自动拆箱
自动装箱指的是基本类型自动转换为包装类对象。
自动拆箱指的是包装类对象自动转换为基本类型。
示例代码:
java
运行
public class WrapperDemo {
public static void main(String[] args) {
// 自动装箱:int 转为 Integer
Integer num = 100;
// 自动拆箱:Integer 转为 int
int value = num;
System.out.println("num:" + num);
System.out.println("value:" + value);
}
}
运行效果:
text
num:100
value:100
3. Integer 的缓存机制
Integer 提供了一个缓存数组,默认缓存 -128 到 127 之间的整数。
这意味着在这个范围内,Integer 对象会复用已有对象;超出这个范围,则会创建新的对象。
示例代码:
java
运行
public class IntegerCacheDemo {
public static void main(String[] args) {
Integer a = 100;
Integer b = 100;
Integer c = 200;
Integer d = 200;
System.out.println("a == b:" + (a == b));
System.out.println("c == d:" + (c == d));
}
}
运行效果:
text
a == b:true
c == d:false
原因是:
100在缓存范围内,所以a和b指向同一个对象200超出缓存范围,所以c和d是两个不同的对象

四、日期时间处理
日期时间处理也是 Java 开发中的高频场景。常见需求包括:
- 获取当前时间
- 日期格式化
- 字符串转日期
- 日期比较
- 日期加减
- 计算两个日期之间的天数
1. JDK 8 之前的日期处理
JDK 8 之前主要使用 java.util.Date 和 java.text.SimpleDateFormat。
示例代码:
java
运行
import java.util.Date;
import java.text.SimpleDateFormat;
public class OldDateDemo {
public static void main(String[] args) {
// 获取当前日期时间
Date now = new Date();
System.out.println("当前时间:" + now);
// 定义格式化pattern
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 日期转为字符串
String dateStr = sdf.format(now);
System.out.println("格式化后:" + dateStr);
}
}
运行效果:
text
当前时间:Wed Jun 05 14:30:00 CST 2024
格式化后:2024-06-05 14:30:00
2. JDK 8 之后的日期处理
JDK 8 之后提供了更清晰、更线程安全的日期时间 API,常用类包括:
表格
| 类 | 作用 |
|---|---|
LocalDate | 表示日期,不包含时间 |
LocalTime | 表示时间,不包含日期 |
LocalDateTime | 表示日期和时间 |
DateTimeFormatter | 用于格式化和解析日期 |
Duration | 计算时间间隔 |
Period | 计算日期间隔 |
示例代码:
java
运行
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class NewDateDemo {
public static void main(String[] args) {
// 获取当前日期时间
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间:" + now);
// 定义格式化器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 日期时间转为字符串
String formatted = now.format(formatter);
System.out.println("格式化后:" + formatted);
}
}
运行效果:
text
当前时间:2024-06-05T14:30:00
格式化后:2024-06-05 14:30:00
3. 日期解析与格式化
在实际开发中,经常需要把前端或数据库中的时间字符串转换为日期对象。
示例代码:
java
运行
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateParseDemo {
public static void main(String[] args) {
// 日期字符串
String dateStr = "2024-06-05";
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 字符串解析为 LocalDate
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println("解析后的日期:" + date);
System.out.println("年份:" + date.getYear());
System.out.println("月份:" + date.getMonthValue());
System.out.println("日期:" + date.getDayOfMonth());
}
}
运行效果:
text
解析后的日期:2024-06-05
年份:2024
月份:6
日期:5
五、本章小结
本章主要学习了三类 Java 基础开发中非常常用的内容:
- 字符串处理:掌握
String、StringBuilder、StringBuffer的区别,能根据场景选择合适的字符串处理方式。 - 包装类:理解基本类型与包装类的转换关系,掌握自动装箱、自动拆箱和
Integer缓存机制。 - 日期时间处理:了解 JDK 8 前后日期 API 的区别,能够使用
LocalDateTime、DateTimeFormatter完成常见日期格式化与解析。
920

被折叠的 条评论
为什么被折叠?



