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)。
相关推荐
曾经的三心草2 小时前
redis-9-集群
java·redis·mybatis
sun03222 小时前
【架构基础】Spring中的PropertySourcesPlaceholderConfigurer介绍 (并非新知识,比较古老的一种使用方式)
java·spring·架构
chilavert3182 小时前
技术演进中的开发沉思-356:重排序(中)
java·开发语言
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于SSM的儿童福利院管理系统为例,包含答辩的问题和答案
java·eclipse
TT哇2 小时前
【实习】数字营销系统 银行经理端(interact_bank)前端 Vue 移动端页面的 UI 重构与优化
java·前端·vue.js·ui
Elieal2 小时前
SpringBoot 数据层开发与企业信息管理系统实战
java·spring boot·后端
识君啊2 小时前
MyBatis-Plus 逻辑删除导致唯一索引冲突的解决方案
java·spring boot·mybatis·mybatis-plus·唯一索引·逻辑删除
Coder_Boy_2 小时前
Java开发者破局指南:跳出内卷,借AI赋能,搭建系统化知识体系
java·开发语言·人工智能·spring boot·后端·spring
QT.qtqtqtqtqt2 小时前
SQL注入漏洞
java·服务器·sql·安全