一、日期与时间类
1. 传统时间类(JDK 1.0+)
(1)Date 类
- 核心作用:描述时间,精度可达毫秒级。
- 构造方式:
- 无参构造
new Date():默认表示系统当前时间,底层调用System.currentTimeMillis()获取当前毫秒值。 - 有参构造
new Date(long time):表示指定毫秒值对应的时间(从 1970-01-01 00:00:00 开始计算)。
- 无参构造
- 核心方法:
getTime():获取时间对象对应的毫秒值。setTime(long time):修改时间对象对应的毫秒值。
(2)SimpleDateFormat 类
- 核心作用:完成时间的格式化(Date → String)与解析(String → Date)。
- 构造方式:
- 无参构造
new SimpleDateFormat():使用系统默认格式。 - 有参构造
new SimpleDateFormat(String pattern):自定义格式(如yyyy年MM月dd日 HH:mm:ss)。
- 无参构造
- 核心方法:
format(Date date):将日期对象格式化为指定格式的字符串。parse(String source):将符合格式的字符串解析为 Date 对象(需捕获ParseException异常)。
(3)Calendar 类
- 核心特点:抽象类,无法直接实例化,需通过
Calendar.getInstance()获取对象,默认代表系统当前时间。 - 关键细节:
- 月份范围:0(1 月)~ 11(12 月),使用时需注意 + 1 转换为常规月份。
- 星期规则:星期日为一周第一天(对应数值 1),星期六对应数值 7。
- 核心方法:
getTime()/setTime(Date date):在 Calendar 与 Date 对象间转换。getTimeInMillis()/setTimeInMillis(long millis):获取 / 设置日历对应的毫秒值。get(int field):获取指定时间字段值(如年、月、日、时、分、秒)。set(int field, int value):修改指定时间字段值。add(int field, int amount):为指定时间字段增加 / 减少指定值(amount 为负数则减少)。
2. JDK 8 新时间 API(线程安全 / 不可变)
(1)ZoneId 时区类
- 核心方法:
getAvailableZoneIds():获取 Java 支持的所有时区(如 Asia/Shanghai、Europe/London)。systemDefault():获取系统默认时区。of(String zoneId):获取指定时区对象(如ZoneId.of("Asia/Shanghai"))。
(2)Instant 时间戳
- 核心定义:表示从 1970-01-01T00:00:00Z(UTC 标准时间)开始的时间戳,精确到纳秒。
- 核心方法:
now():获取当前 Instant 对象(默认 UTC 时间)。ofEpochMilli(long epochMilli):根据毫秒值创建 Instant 对象。atZone(ZoneId zone):将 Instant 转换为带时区的 ZonedDateTime 对象。isBefore()/isAfter():比较两个 Instant 对象的时间先后。minusXxx()/plusXxx():减少 / 增加指定时间单位(如毫秒、秒、分钟)。
(3)ZonedDateTime 带时区时间
- 核心作用:表示带时区的完整日期时间(年、月、日、时、分、秒、纳秒 + 时区)。
- 核心方法:
now():获取当前时区的 ZonedDateTime 对象。ofXxx():创建指定时间的 ZonedDateTime 对象。withXxx()/minusXxx()/plusXxx():修改 / 减少 / 增加指定时间字段。
(4)本地日期时间类
LocalDate:仅包含年、月、日(无时间 / 时区)。LocalTime:仅包含时、分、秒、纳秒(无日期 / 时区)。LocalDateTime:包含年、月、日、时、分、秒、纳秒(无时区)。- 核心方法:
now():获取当前本地时间对象。of(...):创建指定时间的对象(如LocalDateTime.of(2026, 2, 8, 15, 30, 0))。getXxx():获取年、月、日、时等字段值。withXxx()/minusXxx()/plusXxx():修改 / 减少 / 增加指定时间字段。toLocalDate()/toLocalTime():LocalDateTime 与 LocalDate/LocalTime 互转。
(5)DateTimeFormatter 格式化类
- 核心作用:JDK8 中替代 SimpleDateFormat,线程安全的时间格式化 / 解析工具。
- 核心方法:
ofPattern(String pattern):创建指定格式的格式化器(如yyyy-MM-dd HH:mm:ss EE a)。format(TemporalAccessor temporal):将时间对象(如 ZonedDateTime、LocalDateTime)格式化为字符串。
(6)时间间隔类
Duration:计算两个 "时间" 的间隔,精确到秒、纳秒(适用于 LocalTime/Instant)。Period:计算两个 "日期" 的间隔,精确到年、月、日(适用于 LocalDate)。ChronoUnit:支持所有时间单位(年、月、日、时、分、秒等)的间隔计算,更灵活。
🎁 二、包装类
1. 核心概念
- 定义:将 8 种基本数据类型封装为对象,使其能参与面向对象的操作(如存入集合、调用方法)。
- 对应关系:byte→Byte、short→Short、char→Character、int→Integer、long→Long、float→Float、double→Double、boolean→Boolean。
2. Integer 类核心内容
(1)对象创建方式
new Integer(int value):直接创建新对象(不推荐,无缓存)。new Integer(String s):通过数字字符串创建(需保证字符串为有效整数)。valueOf(int i):推荐使用,会复用 - 128~127 范围内的缓存对象,提升性能。valueOf(String s):通过字符串创建,同样复用缓存。valueOf(String s, int radix):通过指定进制的字符串创建(如二进制、八进制)。
(2)自动装箱与拆箱
- 自动装箱:基本类型自动转为包装类对象(如
Integer i = 10;等价于Integer i = Integer.valueOf(10);)。 - 自动拆箱:包装类对象自动转为基本类型(如
int num = i;等价于int num = i.intValue();)。
(3)常用静态方法
toBinaryString(int i):将整数转为二进制字符串。toOctalString(int i):将整数转为八进制字符串。toHexString(int i):将整数转为十六进制字符串。parseInt(String s):将数字字符串转为 int 类型(非数字字符串会抛 NumberFormatException)。

