js--15

一、日期与时间类

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)。
相关推荐
xcl09258 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐10 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长10 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn10 小时前
Spring 注解使用详解
java·spring
一条小小yu10 小时前
Spring IoC的理解
java·后端·spring
落魄实习生11 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈11 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白12 小时前
核心功能(Service接口)
java·mybatis
乌暮13 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习