Java_常用API(二)

Math、System、Runtime

Math

  1. Math:代表数学,是一个工具类,里面提供的都是对数据进行操作的一些静态方法。

  2. Math类提供的常见方法:

    方法名 说明
    public static int abs(int a) 获取参数的绝对值
    public static double ceil(double a) 向上取整
    public static double floor(double a) 向下取整
    public static int round(float a) 四舍五入
    public static int max(int a, int b) 获取两个int值中的较大值
    public static double pow(double a, double b) 返回a的b次幂的值
    public static double random() 返回值为double的随机值,范围[0.0, 1.0)

System

  1. System:代表程序所在的系统,也是一个工具类。

  2. System类提供的常见方法:

    方法名 说明
    public static void exit(int status) 终止当前运行的Java虚拟机
    public static long currentTimeMillis() 返回当前系统的时间毫秒值形式
    • 时间毫秒值:从1970-1-1 00:00:00 开始走到此刻的总毫秒值

Runtime

  1. Runtime:代表程序所在的运行环境,Runtime是一个单例类

  2. Runtime类提供的常见方法:

    方法名 说明
    public static Runtime getRuntime() 返回与当前Java应用程序关联的运行时对象
    public void exit(int status) 终止当前运行的虚拟机
    public int availableProcessors() 返回Java虚拟机可用的处理器数
    public long totalMemory() 返回Java虚拟机中的内存总量
    public long freeMemory() 返回Java虚拟机中的可用内存
    public Process exec(String command) 启动某个程序,并返回代表该程序的对象

BigDecimal

  • BigDecimal:用于解决浮点型运算时,出现结果失真的问题

BigDecimal的构造方法

构造方法 说明
public BigDecimal(double val) 将double转换为BigDecimal
public BigDecimal(String val) 将String转成BigDecimal

注意:不推荐使用public BigDecimal(double val)创建对象,会导致精度损失

BigDecimal的常用方法

方法名 说明
public static BigDecimal valueOf(double val) 将double转换为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对象, 精确几位, 舍入模式) 除法、可以控制精确到小数几位
public double doubleValue() 将BigDecimal转换成double

JDK8之前传统的日期和时间

Date

  1. Date:代表的时日期和时间。

  2. Date的构造方法:

    构造方法 说明
    public Date() 创建一个Date对象,代表的是系统当前此刻日期时间
    public Date(long time) 把时间毫秒值转换成Date日期对象
  3. Date常见方法:

    常见方法 说明
    public void getTime() 返回从1970年1月1日 00:00:00走到此刻的总毫秒数
    public void setTime(long time) 设置日期对象的时间为当前时间毫秒值对应的时间

SimpleDateFormat

  1. SimpleDateFormat:代表简单日期格式化,可以用来把日期对象、时间毫秒值格式化成我们想要的形式。

  2. SimpleDateFormat的常见构造方法:

    常见构造方法 说明
    public SimpleDateFormat(String pattern) 创建简单日期格式化对象,并封装时间的格式
  3. SimpleDateFormat的常见方法:

    格式化时间的方法 说明
    public final String format(Date date) 将日期格式化成日期/时间字符串
    public final String format(Object time) 将时间毫秒值式化成日期/时间字符串
    public Date parse(String source) 把字符串时间解析成日期对象
  4. 时间格式的常见符号:

    符号 说明
    y
    M
    d
    H
    m
    s
    EEE 星期
    a 上午/下午
    • yyyy-MM-dd HH:mm:ss ————— 2023-09-27 20:55:11

Calender

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

  2. Calender日历类的常见方法:

    方法名 说明
    public static Calender getInstance() 获取当前日历对象
    public int get(int field) 获取日历中的某个信息
    public final Date getTime() 获取日期对象
    public long getTmeMillis() 获取时间毫秒值
    public void set(int field, int value) 修改日历的某个信息
    public void add(int field, int amount) 为某个信息增加/减少指定的值

    注意:calender是可变对象,一旦修改后其对象本身表示的时间将产生变化。

JDK8开始新增的日期和时间

为什么要学新增的时间?

  1. JDK8传统的时间API
    • 设计不合理,使用不方便,很多都被淘汰了。
    • 都是可变对象,修改后会丢失最开始的时间。
    • 线程不安全
    • 只能精确到毫秒
  2. JDK8开始后新增的API
    • 设计更合理,功能丰富,使用方便
    • 都是不可变对象,修改后会返回新的时间对象,不会丢失最开始的时间
    • 线程安全
    • 能精确到毫秒、纳秒

LocalDate、LocalTime、LocalDateTime

  • LocalDate:代表本地日期(年、月、日、星期)

  • LocalTime:代表本地时间(时、分、秒、纳秒)

  • LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)

  • 他们获取对象的方法:

    • public statie Xxxx now() 获取系统当前时间对应的该对象
    • public statie Xxxx of() 获取指定时间对应的该对象
    1
    2
    3
    4
    5
    6
    7
    LocalDate ld = LocalDate.now();
    LocalTime lt = LocalTime.now();
    LocalDateTime ldt = LocalDateTime.now();

    LocalDate ld = LocalDate.of(2035, 10, 1);
    LocalTime lt = LocalTime.of(0, 0, 0);
    LocalDateTime ldt = LocalDateTime.of(2035, 10, 1, 0, 0, 0);
  1. LocalDate的常用API:

    • 获取日期

      方法名 说明
      public int getYear() 获取年
      public int getMonthValue() 获取月份(1-12)
      public int getDayOfMonth() 获取日
      public int getDayOfYear() 获取当前是一年中的第几天
      public DayOfWeek getDayOfWeek() 获取星期几:ld.getDayOfWeek().getValue()
    • 修改日期

      方法名 说明
      withYear、withMonth 、withDayOfMonth、withDayOfYear 直接修改某个信息,返回新的日期对象
      plusYears、plusMonths、plusDays、plusWeeks 把某个信息加多少,返回新的日期对象
      minusYears、minusMonths、minusDays、minusWeeks 把某个信息减多少,返回新的日期对象
      equals、isBefore、isAfter 判断两个日期对象,是否相等、在前还是在后
  2. LocalTime的常用API:

    • 获取时间

      方法名 说明
      public int getHour() 获取小时
      public int getMinute() 获取分
      public int getSecond() 获取秒
      public int getNano() 获取纳秒
    • 修改时间

      方法名 说明
      withHour、withMinute、withSecond、withNano 直接修改某个信息,返回新的时间对象
      plusHours、plusMinutes、plusSeconds、plusNanos 把某个信息加多少,返回新的时间对象
      minusHours、minusMinutes、minusSeconds、minusNanos 把某个信息减多少,返回新的时间对象
      equals、isBefore、isAfter 判断两个时间对象,是否相等、在前还是在后
  3. LocalDateTime的常用API:

    • 包含LocalDateLocalTime的所有方法!

    • LocalDateTime提供的格式化、解析时间的方法

      方法名 说明
      public String format(DateTimeFormatter formatter) 格式化时间
      public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) 解析时间

ZoneId、ZoneDateTime

  • ZoneId:代表时区Id
  • ZoneDateTime:带时区的时间
  1. ZoneId时区的常见方法

    方法名 说明
    public static Set<String> getAvailableZoneIds() 获取Java中支持的所有时区
    public static systemDefault() 获取系统默认时区
    public static ZoneId of(String zoneId) 获取一个指定时区
  2. ZonedDateTime带时区时间的常见方法

    方法名 说明
    public static ZonedDateTime now() 获取当前时区的ZoneDateTime对象
    public static ZoneDateTime now(ZoneId zone) 获取指定时区的ZoneDateTime对象
    getYear、getMonthValue、getDayOfMonth、getDayOfYear、getDayOfWeek、getHour、getMinute、getSecond、getNano 获取年、月、日、时、分、秒、纳秒
    public ZonedDateTime withXxx 修改时间系列的方法
    public ZonedDateTime plusXxx 增加时间系列的方法
    public ZonedDateTime plusXxx 减少时间系列的方法

Instant

  1. Instant:代表时间线上的某个时刻/时间戳

  2. 通过获取Instant的对象可以拿到此刻的时间,该事件由两部分组成:从1970-01-01 00:00:00 开始走到此刻的总秒数 + 不够1秒的纳秒数

  3. 作用:做代码的性能分析,或者记录用户的操作时间点

  4. Instant的常见方法:

    方法名 说明
    public static Instant now() 获取当前时间的Instant对象(标准时间)
    public long getrEpochSecond() 获取1970-01-01 00:00:00 开始记录的秒数
    public int getNano() 从时间线开始,获取从第二个开始的纳秒数
    plusMillis、plusSeconds、plusNanos 增加时间系列的方法
    minusMillis、minusSeconds、minusNanos 减少时间系列的方法
    equals、isBefore、isAfter 判断两个时间对象,是否相等、在前还是在后

DateTimeFormatter

  1. DateTimeFormatter:格式化器,用于时间的格式化、解析,线程安全

  2. DateTimeFormatter的常用方法:

    方法名 说明
    public static DateTimeFormatter ofPattern(时间格式) 获取格式化时间对象
    public String format(时间对象) 格式化时间

Period

  1. Period:计算时期间隔(年、月、日),用于计算两个LocalDate对象 相差的年数、月数、天数。

  2. Period常用方法:

    方法名 说明
    public static Period between(LocalDate start, LocalDate end) 传入2个日期对象,得到Period对象
    public int getYears() 计算隔几年,并返回
    public int getMonths() 计算隔几个月,并返回
    public int getDays() 计算隔几天,并返回

Duration

  1. Duration:可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持LocalTime、LocalDateTime、Instant等时间。

  2. Duration常用方法:

    方法名 说明
    public static Duration between(start, end) 传入2个日期对象,得到Duration对象
    public long toDays() 计算隔多少天,并返回
    public long toHours() 计算隔多少小时,并返回
    public long toMinutes() 计算隔多少分,并返回
    public long toSeconds() 计算隔多少秒,并返回
    public long toMillis() 计算隔多少毫秒,并返回
    public long toNaos() 计算隔多少纳秒,并返回

Arrays

  1. Arrays:用来操作数组的一个工具类。

  2. Arrays类类提供的常见方法:

方法名 说明
public static String toString(类型[] arr) 返回数组的内容
public static int[] copyOfRange(类型[], 起始索引, 结束索引) 拷贝数组(指定范围)
public static copyOf(类型[] arr, int newLength) 拷贝数组
public static setAll(double[] array, IntToDoubleFunction gererator) 把数组中的原数据改为新数据
public static void sort(类型[] arr) 对数组进行排序(默认是升序排序)
  1. 如果数组中存储的是对象,如何排序?
  • 方法一:让该对象的类实现comparable(比较规则)接口,然后重写compareTo方法,自己制定比较规则

  • 方法二:使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,然后自己制定比较规则

    1
    public static <T> void sort(T[] arr, Comparator<? super T> c)
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023-2024 LittleWin
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信