Java中面向对象部分常用API(BigDecimal和部分日期相关)

1. BigDecimal

用于解决浮点型运算时,出现精度丢失的问题。

public static void main(String[] args) {
    // 浮点型运算时, 直接+ - * / 可能会出现进度丢失问题
    System.out.println(0.1 + 0.2);
    System.out.println(1.0 - 0.32);
    System.out.println(1.015 * 100);
    System.out.println(1.301 / 100);
}

BigDecimal的常见构造方法、常用方法

构造器

说明

public BigDecimal(double val) 注意:不推荐使用这个

将 double转换为 BigDecimal

public BigDecimal(String val)

把String转成BigDecimal

方法名

说明

public BigDecimal add(BigDecimal b)

加法

public BigDecimal subtract(BigDecimal b)

减法

public BigDecimal multiply(BigDecimal b)

乘法

public BigDecimal divide(BigDecimal b)

除法

public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式)

除法、可以控制精确到小数几位

2. 日期处理

2.1. 关于时间相关的概念

全世界的时间,需要有一个统一的计算标准

2.1.1. GMT(格林尼治标准时间):
  • GMT是基于地球的自转和对恒星的观测来定义的时间标准。
  • 它以英国伦敦郊区的格林尼治天文台为参考点,当太阳在每年的某一天通过格林尼治子午线的时刻为中午12点。
  • GMT曾经是国际上主要的时间标准,但由于它是基于地球自转,而地球自转速度会有微小的变化,因此GMT并不是一个非常精确的时间标准。
2.1.2. UTC(协调世界时):
  • UTC是基于原子时钟的测量,这些原子时钟的精度非常高,几乎不受环境因素影响。
  • UTC由国际时间标准组织维护,并且会通过增加或减少闰秒来校正地球自转速度的微小变化,以保持与GMT接近的一致性。
  • UTC是当前国际上最广泛使用的时间标准,被用于全球的时间服务、互联网、航空和其他许多领域。

总的来说,GMT是一个更传统的时间标准,而UTC是一个更现代、更精确的时间标准。在大多数实际应用中,尤其是需要高精度时间的情况下,UTC是首选的时间标准。在日常生活中,两者之间的差异通常很小,经常可以互换使用。

2.2. Date

Java给我们提供的一个时间类,用来描述时间,精确到毫秒.

构造方法

说明

public Date()

代表的是系统当前时间。

public Date(long time)

代表的是指定时间毫秒值。

常见方法

说明

public long getTime()

返回从1970年1月1日 00:00:00走到此刻的总的毫秒数

public void setTime(long time)

设置Date对象的时间为指定毫秒值

需求1:打印时间原点开始一年之后的时间

2.3. SimpleDateFormat

2.3.1. 作用
  1. 可以用来把Date对象格式化成我们想要的形式。

  1. 可以用来把字符串时间解析成Date对象。

2022-09-27 字符串 -----> Date对象

相关API

常见构造方法

说明

public SimpleDateFormat(String pattern)

创建简单日期格式化对象,并封装指定的模式

常用方法

说明

public final String format(Date date)

将Date对象格式化成字符串

public Date parse(String source)

把字符串表示时间解析成Date对象

时间模式的常见符号:

  • y 年
  • M 月
  • d 日
  • H 时
  • m 分
  • s 秒

2020-11-11 13:27:06 == yyyy-MM-dd HH:mm:ss

2020年11月11日 13:27:06 == yyyy年MM月dd日 HH:mm:ss

2.4. Calendar

Calendar

  • 代表的是系统此刻时间对应的日历。
  • 通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。

Calendar日历类的常见方法

方法名

说明

public static Calendar getInstance()

获取当前日历对象

public final Date getTime()

将Calendar转换成Date

public final void setTime(Date date)

将Date转换成Calendar

public int get(int field)

获取日历中的某个信息

public void set(int field,int value)

修改日历的某个信息

public void add(int field,int amount)

为某个信息增加/减少指定的值

注意:Calendar是一个抽象类,我们不能直接new来创建对象。

public static Calendar getInstance() : 获取当前日历对象

3. JDK8新增的时间类型

参考案例二的代码,如果需要根据字符串创建出来指定的日期格式,在进行比较,会非常复杂,在这个基础上,JDK8新推出了时间类型,可以简化操作,同时解决多线程数据安全的问题。

ZoneId

方法名

说明

static Set<String> getAvailableZoneIds()

获取Java中支持的所有时区

static ZoneId systemDefault()

获取系统默认时区

static ZoneId of(String zoneId)

获取一个指定时区

Instant

方法名

说明

static Instant now()

获取当前时间的Instant对象(标准时间)

static Instant ofXxxx(long epochMilli)

根据(秒/毫秒/纳秒)获取Instant对象

ZonedDateTime atZone(ZoneId zone)

指定时区

boolean isXxx(Instant otherInstant)

判断系列的方法

Instant minusXxx(long millisToSubtract)

减少时间系列的方法

Instant plusXxx(long millisToSubtract)

增加时间系列的方法

ZonedDateTime

方法名

说明

static ZonedDateTime now()

获取当前时间的ZonedDateTime对象

static ZonedDateTime ofXxxx(。。。)

获取指定时间的ZonedDateTime对象

ZonedDateTime withXxx(时间)

修改时间系列的方法

ZonedDateTime minusXxx(时间)

减少时间系列的方法

ZonedDateTime plusXxx(时间)

增加时间系列的方法

DateTimeFormatter

方法名

说明

static DateTimeFormatter ofPattern(格式)

获取格式对象

String format(时间对象)

按照指定方式格式化

LocalDate\LocalTime\LocalDateTime

方法名

说明

static XXX now()

获取当前时间的对象

static XXX of(。。。)

获取指定时间的对象

get开头的方法

获取日历中的年、月、日、时、分、秒等信息

isBefore, isAfter

比较两个 LocalDate

with开头的

修改时间系列的方法

minus开头的

减少时间系列的方法

plus开头的

增加时间系列的方法

方法名

说明

public LocalDate toLocalDate()

LocalDateTime转换成一个LocalDate对象

public LocalTime toLocalTime()

LocalDateTime转换成一个LocalTime对象

  • Period侧重于计算年月日的间隔
  • Duration侧重于秒和纳秒的间隔
  • ChronoUnit适用于所有,推荐使用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值