常用类
Posted dch-21
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用类相关的知识,希望对你有一定的参考价值。
常用类
下面将介绍几种常用类。分别是Math、Random、BigInteger、BigDecimal、SimpleDateFormat、Calendar
Math
是一个数学类,这个类中封装了很多用来做数学计算的方法。当我们需要使用到数学计算的时候,要能够想到这个类。这个类中有很多封装好的数学公式,而且,都是静态方法,方便调用。
常用静态方法
属性 | 描述 | 值 |
---|---|---|
PI | 圆周率 | 3.14159265358979323846 |
E | 自然对数 | 2.7182818284590452354 |
常用方法
方法 | 参数 | 描述 |
---|---|---|
abs | int/long/float/double | 计算一个数字的绝对值 |
max | (int, int)/(long, long)/(float, float)/(double, double) | 计算两个数字的最大值 |
min | (int, int)/(long, long)/(float, float)/(double, double) | 计算两个数字的最小值 |
round | float/double | 计算一个数字的四舍五入 |
floor | float/double | 计算一个数字的向下取整 |
ceil | float/double | 计算一个数字的向上取整 |
pow | (double, double) | 计算一个数字的指定次幂 |
sqrt | double | 计算一个数字的平方根 |
random | - | 获取一个 [0,1) 范围内的浮点型随机数 |
Random
是一个专门负责产生随机数的类。在Java中,Random类在 java.util 包中。在使用之前,需要先导包。
其实,随机数的产生,是有一个固定的随机数算法的。代入一个随机数种子,能够生成一个随机数列。但是由于算法是固定的,因此会有一个“BUG”:如果
随机数的种子相同,则生成的随机数列也完全相同。
常用方法
方法 | 参数 | 描述 |
---|---|---|
Random | 无 | 通过将系统时间作为随机数种子, 实例化一个Random对象 |
int | 通过一个指定的随机数种子,实例化一个Random对象 | |
nextInt | int | 生成一个 [0, bounds) 范围内的整型随机数 |
nextInt | 无 | 生成一个int范围内的随机数 |
nextFloat | 无 | 生成一个 [0, 1) 范围内的float类型的随机数 |
nextDouble | 无 | 生成一个 [0, 1) 范围的double类型的随机数 |
nextBoolean | 无 | 随机生成一个boolean数值 |
BigInteger、BigDecimal
这两个类,都是用来表示数字的类。BigInteger表示整型数字,BigDecimal表示浮点型数字。这两个类,可以用来描述非常、非常、非常大的数字。例如整数, long是最大的表示范围,但是即便是long型,也有它表示不了的情况。BigInteger就是可以表示任意大小的数字。
BigInteger:表示整型数字,不限范围。
BigDecimal:表示浮点型数字,不限范围,不限小数点后面的位数。
常用方法
方法 | 参数 | 描述 |
---|---|---|
构造方法 | String | 通过一个数字字符串,实例化一个对象 |
add | BigInteger/BigDecimal | 加 |
subtract | BigInteger/BigDecimal | 减 |
multipy | BigInteger/BigDecimal | 乘 |
divide | BigInteger/BigDecimal | 除 |
divideAndRemainder | BigInteger/BigDecimal | 除, 保留商和余数 将商存到结果数组的第0位 将余数存到结果数组的第1位 |
xxxValue | - | 转成指定的基本数据类型的结果(可能会溢出) |
Data
是一个用来描述时间、日期的类。 在 java.util 包中!!!
常用方法
方法 | 参数 | 描述 |
---|---|---|
Date | - | 实例化一个Date对象,来描述系统当前时间。 |
Date | long | 通过一个指定的时间戳,实例化一个Date对象,描述指定的时间。 |
getTime | - | 获取一个日期对应的时间戳,从1970年1月1日0时0分0秒开始计算的毫秒数。 |
setTime | long | 通过修改一个时间的时间戳,修改这个时间对象描述的时间。 |
equals | Date | 判断两个时间是否相同 |
before | Date | 判断一个时间是否在另一个时间之前 |
after | Date | 判断一个时间是否在另一个时间之后 |
SimpleDateFormat
是一个用来格式化时间的类。使用这个类,一般有两种操作:
- 将一个Date对象,转成指定格式的时间字符串。
- 将一个指定格式的时间字符串,转成Date对象。
常用时间格式
占位符 | 描述 |
---|---|
y | 表示年。 常用 yyyy 表示长年分。 yy 表示短年份。 |
M | 表示月。 常用 MM 表示两位占位, 如果月份不够两位, 往前补零。 |
d | 表示日。 常用 dd 表示两位占位, 如果日期不够两位, 往前补零。 |
常用方法
方法 | 参数 | 描述 |
---|---|---|
SimpleDateFormat | String | 通过一个指定的时间格式, 实例化一个对象。 |
format | Date | 将一个Date对象转成指定格式的字符串。 |
parse | String | 将一个指定格式的时间字符串,解析成一个Date对象。 |
H | 表示时, 24小时制。 常用 HH 表示两位占位, 如果时不够两位, 往前补零。 |
|
h | 表示时, 12小时制。 常用 hh 表示两位占位, 如果时不够两位, 往前补零。 |
|
m | 表示分。 常用 mm 表示两位占位, 如果分不够两位, 往前补零。 |
|
s | 表示秒。 常用 ss 表示两位占位, 如果秒不够两位, 往前补零。 |
|
S | 表示毫秒。 常用 SSS 表示三位占位, 如果毫秒不够三位, 往前补零。 |
parse 方法
会抛出一个编译时的异常。在使用的时候,用try-catch 包围即可。
将一个字符串,按照指定的格式进行解析。如果字符串中的时间格式,和对象实例化的时候给定的格式不同,此时会出现异常。
Calendar
是一个用来描述时间、日期的类。比Date的功能更加完善。在Date类中,有很方法都已经被废弃了。用Caleendar类中的某些方法来替代。
方法 | 参数 | 描述 |
---|---|---|
getInstance | - | 获取用来描述当前时间的Calendar子类对象, 并向上转型为了Calendar类型。 Calendar类是一个抽象类, 无法实例化对象。 |
get | int | 通过指定的字段,获取字段对应的值。 字段的信息, 通过Calendar类中定义的一些静态常量来获取。 例如: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH... |
set | int, int | 通过指定的字段,设置字段对应的值。 字段的信息, 通过Calendar类中定义的一些静态常量来获取。 例如: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH... |
set | int, int, int int, int, int, int, int int, int, int, int, int, int |
同时设置年月日信息 同时设置年月日时分信息 同时设置年月日时分秒信息 |
getTime | - | 获取指定时间对应的Date对象 |
setTime | Date | 通过一个Date对象,设置时间 |
getTimeInMillis | - | 获取当前时间戳 |
setTimeInMillis | long | 通过时间戳设置时间 |
equals | Calendar | 判断两个日期是否相同 |
before | Calendar | 判断一个日期是否在另外一个日期之前 |
after | Calendar | 判断一个日期是否在另外一个日期之后 |
add | int, int | 对指定的字段进行加法, 增加指定的时间偏移量 |
public class CalendarUsage {
public static void main(String[] args) {
// 1. Calendar是一个抽象类,无法直接进行实例化
Calendar calendar = Calendar.getInstance();
// 2. 通过指定的字段,获取对应的值。
// 在 Calendar 类中,已经封装好了若干个静态常量,来表示不同的字段。
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)); // 在Calendar中,月份是从0开始的。
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
// 3. 通过指定的字段,设置对应的值
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.DAY_OF_MONTH, 29);
// 4. 同时设置年月日
calendar.set(2021, Calendar.SEPTEMBER, 7);
// 同时设置年月日时分
calendar.set(2022, Calendar.NOVEMBER, 12, 23, 59);
// 同时设置年月日时分秒
calendar.set(2022, Calendar.NOVEMBER, 12, 23, 59, 59);
// 5. 获取日期(Date对象)
Date date = calendar.getTime();
// 6. 设置日期(Date对象)
calendar.setTime(new Date());
// 7. 获取时间戳
long timestamp = calendar.getTimeInMillis();
// 8. 设置时间戳
calendar.setTimeInMillis(timestamp);
// 9. 判断一个日期是否在另外一个日期之前
// 类似的方法还有 equals、after
calendar.before(Calendar.getInstance());
// 10. 对一个日期进行加法操作
calendar.add(Calendar.MONTH, 3);
calendar.add(Calendar.DAY_OF_MONTH, 21);
System.out.println(calendar);
}
}
以上是关于常用类的主要内容,如果未能解决你的问题,请参考以下文章