Lazy loaded image
编程
📗Day14-内置类(System,BigInteger,BigDecimal,日期时间类)
字数 2032阅读时长 6 分钟
2019-1-26
2025-8-13
type
status
date
slug
summary
tags
category
icon
password

System类属性

in: 表示输入,指的是键盘 out: 表示的标准输出,指的是系统命令行 err: 表示错误输出,指的是系统命令行

System类方法

getProperties(): 获取到系统属性 getenv(): 获取到应用程序的运行环境 currentTimeMillis():获取到当前时间的时间戳(距离 1970年1月1日 00:00:00 UTC的毫秒数) arraycopy(Object src, int srcPos,Object dest, int destPos,int length):

BigInteger、BigDecimal

基本数据类型 byte、short、int、long、float、double、char、boolean 基本包装类型 Byte、Short、Integer、Long、Float、Double、Character、Boolean 无论是基本数据类型还是基本包装类型,都无法解决两个问题: 1. 对于超大整数来说,无法表示 2. 对于超精度浮点数来说,也无法精确表示 使用 BigInteger 来表示超大整数,使用 BigDecimal 用来表示超精度浮点数
BigInteger 和 Integer以及int 没有关系, 它们之间不能转换
BigInteger实现运算,不能使用算数运算符,而是要调用方法add + 、subtract - 、multiply * 、divide /
BigDecimal可以保证数据浮点数计算以后的精度 divide(BigDecimal db): 如果得到的结果是一个无限循环数,会报错 divide(BigDecimal db,int scale,int roundingMode): scale 表示小数点后的位数 roundingMode 小数点后的处理方式(四舍五入,舍去,进一)divide(BigDecimal db,int roundingMode):
 

学习内置类的套路

  1. 使用类创建对象
    1. 使用 new 方法调用构造方法,创建一个实例对象 String / Date 如果构造方法私有,不允许外部创建实例对象或者是一个抽象类接口
    2. 看类里是否有静态方法,能够返回一个实例对象
    3. 看能不能创建子类对象
    4. 看这个类里的方法是否全都是静态的,如果方法全静态,表示这是一个工具类 eg:Arrays/Math/Objects 等等
  1. 有哪些属性和方法可以调用

日期类综述

Java里可以使用java.util.Date Calendar LocalDate LocalTime LocalDateTime Instant类来表示日期时间

Date

  • 构造方法: Date(): 空参构造方法,创建的是当前日期时间对象 Date(long time): 创建 指定时间戳 的日期时间对象
  • 其他方法: Date里的大部分方法在 JDK1.1 里都已经废弃了,不建议使用;可用一个新的类 Calendar 来取代 Date里的大部分功能 getYear(): 获取到年,不是精确的年份,而是 真实年份-1900 后的结果

SimpleDateFormat

使用 SimpleDateFormat类来实现日期时间格式化: Date类型对象 --> 字符串,调用 format方法 字符串 --> Date类型的对象,调用 parse方法

Date类代码演示

Calender

Calendar 类是JDK1.1推出的,用来取代 Date里的方法,Calender是一个抽象类,不能直接创建实例对象因此可以考虑
  1. 可以考虑创建一个子类对象
    1. 调用静态方法,获取到一个 Calendar类型的对象获取到当前的日期时间
  • 常见方法: get(int field): 根据字段获取到对应的值. field 就是数字,可选值是0~16,定义在 Calendar类里的静态成员常量,每个字段都代表了一个日期属性,比如年、月、日等
  • 该类缺点: 1. 所有的获取属性都通过 get 方法传入字段,一共有 17 个字段 2. 静态方法返回的结果是数字,表达的意思模糊且不统一,0表示一月 1表示周日
  • 优化方向(该类不具备): 1. 列出常见的方法 getYear() getMonth() getDate() getHour() 2. 返回的结果不要再使用数字表示,用 枚举 来表示!

LocalDate、LocalTime、LocalDateTime

Calendar类可以用来表示日期时间类,但是它有一些问题
  1. 只能通过get(int field)获取字段
  1. 返回的结果是数字,不明确 JDK8新出了 LocalDate LocalTime LocalDateTime Instant 分别用来表示 日期/时间以及日期时间
还有一些其他的方法可以用来做日期时间的计算,就是localDateTime这三啦。

Local日期家族的格式化

JDK8里的日期时间转换成为字符串,使用的是 DateTimeFormatter 类 LocalDate LocalTime LocalDateTime --> 字符串 format 字符串 --> LocalDate LocalTime LocalDateTime parse
上一篇
Day13-内置类(String,StringBuilder,StringBuffer)
下一篇
Day15-异常处理(try...catch,throw,throws)