常用API
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) |
public static double sqrt(double a) | 返回a 的平方根 |
public static double cbrt(double a) | 返回a的立方根 |
System
System代表程序所在的系统,也是一个工具类。
System类提供的常见方法
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的Java虚拟机。 |
public static long currentTimeMillis() | 返回当前系统的时间毫秒值形式 |
- 这里的毫秒值指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数(1s = 1000ms)。
Runtime
代表程序运行所在的环境
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
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);
}
![image-20240410212956555](https://i-blog.csdnimg.cn/blog_migrate/3c8bdec00a40fddf0fc91b40510c5bb9.png)
构造器 | 说明 |
---|---|
public BigDecimal(double val) 注意:不推荐使用这个,无法总精确运算 | 将 double转换为BigDecimal |
public BigDecimal(String val) | 把String转成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
代表的是日期和时间。
构造器 | 说明 |
---|---|
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间。 |
public Date(long time) | 把时间毫秒值转换成Date日期对象。 |
常见方法 | 说明 |
---|---|
public long getTime() | 返回从1970年1月1日 00:00:00走到此刻的总的毫秒数 |
public void setTime(long time) | 设置日期对象的时间为当前时间毫秒值对应的时间 |
SimpleDateFormat
**SimpleDateFormat:**代表简单日期格式化,可以用来把日期对象、时间毫秒值格式化成我们想要的形式。
![image-20240410215011046](https://i-blog.csdnimg.cn/blog_migrate/ca25535f64bb6f1f6155fde4e9ed8fd7.png)
SimpleDateFormat
常见构造器 | 说明 |
---|---|
public SimpleDateFormat(String pattern) | 创建简单日期格式化对象,并封装时间的格式 |
格式化时间的方法 | 说明 |
---|---|
public final String format(Date date) | 将日期格式化成日期/时间字符串 |
public final String format(Object time) | 将时间毫秒值式化成日期/时间字符串 |
时间格式的常见符号
![image-20240410215306465](https://i-blog.csdnimg.cn/blog_migrate/37cbaccda58ec3ea094eb994b67fd35f.png)
SimpleDateFormat解析字符串时间成为日期对象
解析方法 | 说明 |
---|---|
public Date parse(String source) | 把字符串时间解析成日期对象 |
- SimpleDateFormat代表什么,有什么作用?
- 简单日期格式化对象
- 可以把日期对象及时间毫秒值格式化成我们想要的字符串形式。
- 可以把字符串的时间形式解析成Date日期对象。
- SimpleDateFormat的对象如何创建?
- public SimpleDateFormat(String pattern)
- SimpleDateFormat格式化,以及解析时间的方法是怎么样的?
- public final String format(Date d):格式化日期对象
- public final String format(Object time):格式化时间毫秒值
- public Date parse(String source):解析字符串时间
Calendar
-
代表的是系统此刻时间对应的日历。
-
通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。
-
代表的是系统此刻时间对应的日历,通过它可以单独获取、修改时间中的年、月、日、时、分、秒等
方法名 | 说明 |
---|---|
public static Calendar getInstance() | 获取当前日历对象 |
public int get(int field) | 获取日历中的某个信息。 |
public final Date getTime() | 获取日期对象。 |
public long getTimeInMillis() | 获取时间毫秒值 |
public void set(int field,int value) | 修改日历的某个信息。 |
public void add(int field,int amount) | 为某个信息增加/减少指定的值 |
**注意:**calendar是可变对象,一旦修改后其对象本身表示的时间将产生变化。
JDK8开始新增的日期、时间
为什么要学JDK8新增的时间?
JDK8新增的时间
LocalDate:年、月、日
LocalTime:时、分、秒
LocalDateTime:年、月、日、时、分、秒
ZoneId : 时区
ZonedDateTime:带时区的时间
DateTimeFormatter : :用于时间的格式化和解析
java.time包下的类 :
![image-20240411081609859](https://i-blog.csdnimg.cn/blog_migrate/61b811fd715b75ea2673adbd0a56a161.png)
LocalDate、LocalTime、LocalDateTime
LocalDate:代表本地日期(年、月、日、星期)
LocalTime:代表本地时间(时、分、秒、纳秒)
LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)它们获取对象的方案
方法名 示例 public static Xxxx now(): 获取系统当前时间对应的该对象 LocaDate ld = LocalDate.now(); LocalTime lt = LocalTime.now(); LocalDateTime ldt = LocalDateTime.now(); public static Xxxx of(…):获取指定时间的对象 LocalDate localDate1 = LocalDate.of(2099 , 11,11); LocalTime localTime1 = LocalTime.of(9, 8, 59); LocalDateTime localDateTime1 = LocalDateTime.of(2025, 11, 16, 14, 30, 01);
转换相关的API
LocalDateTime的转换成LocalDate、LocalTime
方法名 | 说明 |
---|---|
public LocalDate toLocalDate() | 转换成一个LocalDate对象 |
public LocalTime toLocalTime() | 转换成一个LocalTime对象 |
LocalDate的常用API(都是处理年、月、日、星期相关的)。
方法名 | 说明 |
---|---|
public int geYear() | 获取年 |
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 | 判断两个日期对象,是否相等,在前还是在后 |
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 | 判断2个时间对象,是否相等,在前还是在后 |
LocalDateTime的常用API(可以处理年、月、日、星期、时、分、秒、纳秒等信息)
方法名 | 说明 |
---|---|
getYear、getMonthValue、getDayOfMonth、getDayOfYear getDayOfWeek、getHour、getMinute、getSecond、getNano | 获取年月日、时分秒、纳秒等 |
withYear、withMonth、withDayOfMonth、withDayOfYear withHour、withMinute、withSecond、withNano | 修改某个信息,返回新日期时间对象 |
plusYears、plusMonths、plusDays、plusWeeks plusHours、plusMinutes、plusSeconds、plusNanos | 把某个信息加多少,返回新日期时间对象 |
minusYears、minusMonths、minusDays、minusWeeks minusHours、minusMinutes、minusSeconds、minusNanos | 把某个信息减多少,返回新日期时间对象 |
equals isBefore isAfter | 判断2个时间对象,是否相等,在前还是在后 |
修改相关的API
- LocalDateTime 综合了 LocalDate 和 LocalTime 里面的方法,所以下面只用 LocalDate 和 LocalTime 来举例。
- 这些方法返回的是一个新的实例引用,因为LocalDateTime 、LocalDate 、LocalTime 都是不可变的。
方法名 | 说明 |
---|---|
plusDays, plusWeeks, plusMonths, plusYears | 向当前 LocalDate 对象添加几天、 几周、几个月、几年 |
minusDays, minusWeeks, minusMonths, minusYears | 从当前 LocalDate 对象减去几天、 几周、几个月、几年 |
withDayOfMonth, withDayOfYear, withMonth, withYear | 将月份天数、年份天数、月份、年 份 修 改 为 指 定 的 值 并 返 回 新 的 LocalDate 对象 |
isBefore, isAfter | 比较两个 LocalDate |
Instant时间戳
1、 Duration: 用于计算两个“时间”间隔。
2、 Period: 用于计算两个“日期”间隔。
ChronoUnit类可用于在单个时间单位内测量一段时间,这个工具类是最全的了,可以用于比较所有的时间单位
ZoneId、ZonedDateTime
- ZoneId:代表时区Id
- 中国标准时间: 世界标准时间(UTC) + 8小时
ZoneId 时区的常见方法
方法名 | 说明 |
---|---|
public static Set getAvailableZoneIds() | 获取Java中支持的所有时区 |
public static ZoneId systemDefault() | 获取系统默认时区 |
public static ZoneId of(String zoneId) | 获取一个指定时区 |
ZonedDateTime 带时区时间的常见方法
方法名 | 说明 |
---|---|
public static ZonedDateTime now() | 获取当前时区的ZonedDateTime对象 |
public static ZonedDateTime now(ZoneId zone) | 获取指定时区的ZonedDateTime对象 |
getYear、getMonthValue、getDayOfMonth、getDayOfYeargetDayOfWeek、getHour、getMinute、getSecond、getNano | 获取年月日、时分秒、纳秒等 |
public ZonedDateTime withXxx(时间) | 修改时间系列的方法 |
public ZonedDateTime minusXxx(时间) | 减少时间系列的方法 |
public ZonedDateTime plusXxx(时间) | 增加时间系列的方法 |
DateTimeFormatter
方法名 | 说明 |
---|---|
public static DateTimeFormatter ofPattern(时间格式) | 获取格式化器对象 |
LocalDateTime提供的格式化、解析时间的方法
方法名 | 说明 |
---|---|
public String format(DateTimeFormatter formatter) | 格式化时间 |
public static LocalDateTime parse(CharSequence text,DateTimeFormatter formatter) | 解析时间 |
Arrays
用来操作数组的一个工具类。
Arrays类提供的的常见方法
方法名 | 说明 |
---|---|
public static String toString(类型[] arr) | 返回数组的内容(字符串形式) |
public static int[] copyOfRange(类型[] arr, 起始索引, 结束索引) | 拷贝数组(指定范围) |
public static 类型 copyOf(类型[] arr, int newLength) | 拷贝数组 |
public static void setAll(double[] array, IntToDoubleFunction generator) | 把数组中的原数据改为新数据 |
public static void sort(类型[] arr) | 对数组进行排序(默认是升序排序) |
public static void sort(类型[] a, Comparator<? super T> c) | 使用比较器对象自定义排序 |
public static int binarySearch(int[] a, int key) | 二分搜索数组中的数据,存在返回索引,不存在返回-1 |
对数组中的数据进行排序
double[] prices = {99.8, 128, 100};
Arrays.*sort*(prices);
System.out.println(Arrays.toString(prices));
99.8, 100.0, 128.0
如果数组中存储的是对象, 如何排序?
Student[] students = new Student[4];
students[0] = new Student("蜘蛛精", 169.5, 23);students[1] = new Student("紫霞", 163.8, 26);students[2] = new Student("紫霞", 163.8, 26);students[3] = new Student("至尊宝", 167.5, 24);
- 方式一:
- 自然排序:让该对象的类实现Comparable(比较规则)接口,重写compareTo方法,制定比较规则
- 方式二:
- 比较器排序:使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,制定比较规则
public static void sort(T[] arr, Comparator<? super T> c) | 对数组进行排序(支持自定义排序规则) |
---|
自定义排序规则时,需要遵循的官方约定如下:
-
设置Comparator接口对应的比较器对象,来定制比较规则
-
左边对象大于右边对象,返回正整数;
-
左边对象小于右边对象,返回负整数;
-
两边对象相等,返回0 这样就可以得到升序
-