第6章 Java常用类
6.1 包装类(Wrapper Classes)
-
定义:包装类是基本数据类型的对象表示形式,它们允许我们把基本类型当作对象来使用。
- 用途:提供静态方法进行基本类型和字符串之间的转换。
-
自动装箱与拆箱:
- (1)自动装箱:将基本类型自动转换为对应的包装类对象。
- (2)拆箱:将包装类对象自动转换回基本类型。
-
12
Integer num =
42
;
// 自动装箱
int
value = num;
// 自动拆箱
6.2
String
类概述不可变性:
String
对象一旦创建就不能被修改,任何改变都会生成新的String
对象。 -
字符串拼接:使用
+
运算符或StringBuilder
类进行高效拼接。 -
123
String greeting =
"Hello"
;
String name =
"Alice"
;
String message = greeting +
", "
+ name +
"!"
;
// 字符串拼接
6.3
StringBuffer
类与StringBuilder
类 - 共同点:都是可以修改内容的字符串类,与
String
不同,它们的内容可以更改而不必创建新对象。 - 区别:
StringBuffer
是线程安全的,所有方法都是同步的;而StringBuilder
不是线程安全的,因此性能更好。 - 常用方法:
(1)append(String str)
:追加字符串。(2)insert(int offset, String str)
:在指定位置插入字符串。(3)delete(int start, int end)
:删除指定范围内的字符。(4)reverse()
:反转字符串内容。- 如果不需要多线程支持,推荐使用
StringBuilder
以获得更好的性能。 -
123
StringBuilder builder =
new
StringBuilder(
"Hello"
);
builder.append(
", World!"
);
System.out.println(builder.toString());
// 输出: Hello, World!
6.4 时间和日期相关类
-
Date
和Calendar
类(遗留API):- 这些类已经被新的
java.time
包中的类取代,但在旧代码中仍然常见。
- 这些类已经被新的
-
java.time
包(现代API):- Java 8引入了全新的时间日期API,位于
java.time
包下,提供了更直观和易用的类。
- Java 8引入了全新的时间日期API,位于
-
常用类:
LocalDate
:表示不带时区的日期。LocalTime
:表示不带日期的时间。LocalDateTime
:结合了日期和时间,但不包含时区信息。ZonedDateTime
:包含时区信息的完整日期时间表示。Duration
:用于计算两个时间点之间的时间差。Period
:用于计算两个日期之间的天数、月数或年数。
-
格式化与解析:
- 使用
DateTimeFormatter
类来格式化和解析日期时间字符串。
- 使用
-
常用类:
LocalDate
:表示不带时区的日期。LocalTime
:表示不带日期的时间。LocalDateTime
:结合了日期和时间,但不包含时区信息。ZonedDateTime
:包含时区信息的完整日期时间表示。Duration
:用于计算两个时间点之间的时间差。Period
:用于计算两个日期之间的天数、月数或年数。
-
格式化与解析:
- 使用
DateTimeFormatter
类来格式化和解析日期时间字符串。
- 使用
-
示例:
Java深色版本LocalDate today = LocalDate.now(); LocalDateTime now = LocalDateTime.now(); ZonedDateTime zonedNow = ZonedDateTime.now(ZoneId.of("Asia/Shanghai")); Duration duration = Duration.between(LocalTime.of(8, 30), LocalTime.of(9, 45));
6.5 其他常用类
-
Math
类:- 提供了数学运算相关的静态方法,如
abs()
、max()
、min()
、sqrt()
等。
- 提供了数学运算相关的静态方法,如
-
Random
类:- 用于生成伪随机数,提供
nextInt()
、nextDouble()
等方法。
- 用于生成伪随机数,提供
-
Scanner
类:- 从控制台或其他输入源读取用户输入,常用于简单的命令行程序。
-
ArrayList
类:- 动态数组实现,允许在运行时调整大小,替代传统的固定大小数组。
-
HashMap
类:- 实现键值对映射的数据结构,提供了快速查找、插入和删除操作。
-
File
类:- 表示文件或目录路径名的抽象表示,提供了文件操作的相关方法。
-
System
类:- 提供了一些系统级的操作,如获取当前时间戳(
currentTimeMillis()
)、标准输入输出流等。
- 提供了一些系统级的操作,如获取当前时间戳(
-
Thread
类和Runnable
接口:- 用于创建和管理线程,实现多线程编程。
-
学习心得
StringBuffer
和StringBuilder
提供了高效的字符串操作能力,尤其适合需要频繁修改字符串的场景 -
遇到的难点及解决方法
- 难点:理解各个类的具体应用场景
- 解决方法:针对每个类编写具体的练习代码,探索其特性和限制。参考官方文档和其他开发者的经验分享,了解如何在实际项目中有效使用这些类。通过不断实践和优化代码,逐渐积累经验,找到最适合自己的解决方案。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?