常用类
Math
java中的+,-,*,/和%等基本算术运算符不能进行更复杂的数学运算,例如三角函数,指数运算,对数运算等。
1.静态常量
Math.E
:自然对数e
Math.PI
:圆周率Π
2.最大(小)值,绝对值
Math.abs
:绝对值
Math.max
:最大值
Math.min
:最小值
3.取整运算
Math.ceil
:返回大于或等于当前值的最小整数
Math.floor
:返回小于或等于当前值的最大整数
Math.rint
:返回最接近当前值的整数值,如果存在两个同样接近的整数,则取偶数
Math.round
:将当前值加上1/2后返回与参数最近的整数
4.三角函数
Math.sin
,Math.cos
,Math.tan
,Math.asin
,Math.acos
,Math.atan
Math.toDegrees
:将弧度转换为近似相等的角度
Math.toRadians
:将角度转换为近似相等的弧度
5.指(对)数运算
Math.exp(double a)
:e的a次幂
Math.pow(double a,double b)
:a的b次幂
Math.sqrt(double a)
:a的平方根
Math.cbrt(double a)
:a的立方根
Math.log(double a)
:a的自然对数,lna
Math.log(double a)
:10为底a的对数
Random
Math.random()
只能产生double类型的0~1的随机数,而Random类提供丰富的随机数生成方法,可以产生boolean,int,long,float,byte数组以及double类型的随机数。
1.Random的构造函数
//制定一个种子数创建对象
public Random(longl seed);
//使用当前系统时间对应的相对时间有关的数字作为种子数
public Random();
2.Random的种子数作用
种子数只是随机算法的起源数字,和生成的随机数字的区间无关。
Random类中实现的随机算法是伪随机,即有规则的随机,在种子数的基础上进行一定的变换,且相同的种子数的Random对象,相同次数生成的随机数字是完全相同的。
Random ran1 = new Random(100);
Random ran2 = new Random(100);
for(int i=0;i<5;i++) {
int nextInt = ran1.nextInt();
int nextInt2 = ran2.nextInt();
}
以上nextInt
和nextInt2
相等。
DecimalFormat
符号 | 说明 |
---|---|
0 | 显示数字,如果位数不够则补 0 |
# | 显示数字,如果位数不够不发生变化 |
. | 小数分隔符 |
- | 减号 |
, | 组分隔符 |
E | 分隔科学记数法中的尾数和小数 |
% | 前缀或后缀,乘以 100 后作为百分比显示 |
? | 乘以 1000 后作为千进制货币符显示。用货币符号代替。如果双写,用国际货币符号代替; 如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符 |
BigInteger/BigDecimal
BigInteger支持任意精度的整数
方法名称 | 说明 |
---|---|
add(BigInteger val) | 做加法运算 |
subtract(BigInteger val) | 做减法运算 |
multiply(BigInteger val) | 做乘法运算 |
divide(BigInteger val) | 做除法运算 |
remainder(BigInteger val) | 做取余数运算 |
divideAndRemainder(BigInteger val) | 做除法运算,返回数组的第一个值为商,第二个值为余数 |
pow(int exponent) | 做参数的 exponent 次方运算 |
negate() | 取相反数 |
shiftLeft(int n) | 将数字左移 n 位,如果 n 为负数,则做右移操作 |
shiftRight(int n) | 将数字右移 n 位,如果 n 为负数,则做左移操作 |
and(BigInteger val) | 做与运算 |
or(BigInteger val) | 做或运算 |
compareTo(BigInteger val) | 做数字的比较运算 |
equals(Object obj) | 当参数 obj 是 Biglnteger 类型的数字并且数值相等时返回 true, 其他返回 false |
min(BigInteger val) | 返回较小的数值 |
max(BigInteger val) | 返回较大的数值 |
BigDecimal实现精度运算的本质是,将小数转为去除小数点后的整数 + 小数点所在的位置
方法名称 | 说明 |
---|---|
add(BigDecimal val) | 做加法运算 |
subtract(BigDecimal val) | 做减法运算 |
multiply(BigDecimal val) | 做乘法运算 |
divide(BigDecimal val,int scale,int roundingMode) | 做除法运算 |
其中,divide()方法的3 个参数分别表示除数、商的小数点后的位数和近似值处理模式。
处理模式 | 说明 |
---|---|
BigDecimal.ROUND_UP | 商的最后一位如果大于 0,则向前进位,正负数都如此 |
BigDecimal.ROUND_DOWN | 商的最后一位无论是什么数字都省略 |
BigDecimal.ROUND_CEILING | 商如果是正数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN 模式处理 |
BigDecimal.ROUND_FLOOR | 与 ROUND_CELING 模式相反,商如果是正数,按照 ROUND_DOWN 模式处理; 如果是负数,按照 ROUND_UP 模式处理 |
BigDecimal.ROUND_HALF_ DOWN | 对商进行五舍六入操作。如果商最后一位小于等于 5,则做舍弃操作,否则对最后 一位进行进位操作 |
BigDecimal.ROUND_HALF_UP | 对商进行四舍五入操作。如果商最后一位小于 5,则做舍弃操作,否则对最后一位 进行进位操作 |
BigDecimal.ROUND_HALF_EVEN | 如果商的倒数第二位是奇数,则按照 ROUND_HALF_UP 处理;如果是偶数,则按 照 ROUND_HALF_DOWN 处理 |
Runtime
Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用,通过该对象可调用Runtime对象的方法去控制Java虚拟机的状态和行为。
方法 | 说明 |
---|---|
public static Runtime getRuntime() | 返回Runtime类的实例。 |
public void exit(int status) | 终止当前的虚拟机。 |
public void addShutdownHook(Thread hook) | 注册新的钩子线程。 |
public Process exec(String command)throws IOException | 在单独的进程中执行给定命令。 |
public int availableProcessors() | 返回编号。可用处理器的数量。 |
public long freeMemory() | 返回JVM中的可用内存量。 |
public long totalMemory() | 返回JVM中的总内存量。 |
System
1.静态成员变量
PrintStream out
:标准输出流
//println方法是属于流类PrintStream的方法
System.out.println(data);
PrintStream err
:标准的错误输出流,其语法与System.out
类似,不需要提供参数就可以输出错误信息,也可以用来输出用户指定的其它信息,包括变量的值。
InputStream in
:标准输入流
2.成员方法
arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
:src表示源数组,srcPos表示从源数组中复制的起始位置,dest表示目标数组,destPos表示要复制到目标数组的起始位置,length表示复制的个数
currentTimeMillis()
:返回当前的计算机时间,为当前计算机时间与GMT时间(格里尼治时间)所差的毫秒数。一般用来测试程序执行时间
exit(int status)
:终止当前正在运行的Java虚拟机,status为0时表示正常退出,非零时表示异常退出
gc
:请求系统进行垃圾回收,完成内存中垃圾清除
getProperty(String key)
:获取系统中属性名为key的属性对应的值
属性名 | 属性说明 |
---|---|
java.version | Java 运行时环境版本 |
java.home | Java 安装目录 |
os.name | 操作系统的名称 |
os.version | 操作系统的版本 |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
Date
Date 类表示系统特定的时间戳,可以精确到毫秒,Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。
Date()
:该构造方法表示当前时间
Date(long date)
:该构造方法表示从GMT时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date 指定的毫秒数后的时间。
方法 | 描述 |
---|---|
boolean after(Date when) | 判断此日期是否在指定日期之后 |
boolean before(Date when) | 判断此日期是否在指定日期之前 |
int compareTo(Date anotherDate) | 比较两个日期的顺序 |
boolean equals(Object obj) | 比较两个日期的相等性 |
long getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数 |
String toString() | 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。 其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat) |
Calender
通过Calendar.getInstance() 方法来获得 Calendar类的对象,该对象已由当前日期和时间初始化。
该类为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法。
方法 | 描述 |
---|---|
void add(int field, int amount) | 根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount |
boolean after(Object when) | 判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回判断结果 |
boolean before(Object when) | 判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回判断结果 |
void clear() | 清空 Calendar 中的日期时间值 |
int compareTo(Calendar anotherCalendar) | 比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0 |
int get(int field) | 返回指定日历字段的值 |
int getActualMaximum(int field) | 返回指定日历字段可能拥有的最大值 |
int getActualMinimum(int field) | 返回指定日历字段可能拥有的最小值 |
int getFirstDayOfWeek() | 获取一星期的第一天。根据不同的国家地区,返回不同的值 |
static Calendar getInstance() | 使用默认时区和语言坏境获得一个日历 |
static Calendar getInstance(TimeZone zone) | 使用指定时区和默认语言环境获得一个日历 |
static Calendar getInstance(TimeZone zone, Locale aLocale) | 使用指定时区和语言环境获得一个日历 |
Date getTime() | 返回一个表示此 Calendar 时间值(从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒至现在的毫秒偏移量)的 Date 对象 |
long getTimeInMillis() | 返回此 Calendar 的时间值,以毫秒为单位 |
void set(int field, int value) | 为指定的日历字段设置给定值 |
void set(int year, int month, int date) | 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 |
void set(int year, int month, int date, int hourOfDay, int minute, int second) | 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值 |
void setFirstDayOfWeek(int value) | 设置一星期的第一天是哪一天 |
void setTimeInMillis(long millis) | 用给定的 long 值设置此 Calendar 的当前时间值 |
Calendar类中定义了许多常量
Calendar.YEAR
:年份
Calendar.MONTH
:月份
Calendar.DATE
:日期
Calendar.DAY_OF_MONTH
:与上面的字段意义相同
Calendar.HOUR
:12小时制的小时
Calendar.HOUR_OF_DAY
:24 小时制的小时
Calendar.MINUTE
:分钟
Calendar.SECOND
:秒
Calendar.DAY_OF_WEEK
:星期几
DateFormat/SimpleDateFormat
1.通过DateFormat.getInstance() 方法来获得 DateFormat类的对象。
方法 | 描述 |
---|---|
String format(Date date) | 将 Date 格式化日期/时间字符串 |
Calendar getCalendar() | 获取与此日期/时间格式相关联的日历 |
static DateFormat getDateInstance() | 获取具有默认格式化风格和默认语言环境的日期格式 |
static DateFormat getDateInstance(int style) | 获取具有指定格式化风格和默认语言环境的日期格式 |
static DateFormat getDateInstance(int style, Locale locale) | 获取具有指定格式化风格和指定语言环境的日期格式 |
static DateFormat getDateTimeInstance() | 获取具有默认格式化风格和默认语言环境的日期/时间 格式 |
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle) | 获取具有指定日期/时间格式化风格和默认语言环境的 日期/时间格式 |
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale) | 获取具有指定日期/时间格式化风格和指定语言环境的 日期/时间格式 |
static DateFormat getTimeInstance() | 获取具有默认格式化风格和默认语言环境的时间格式 |
static DateFormat getTimeInstance(int style) | 获取具有指定格式化风格和默认语言环境的时间格式 |
static DateFormat getTimeInstance(int style, Locale locale) | 获取具有指定格式化风格和指定语言环境的时间格式 |
void setCalendar(Calendar newCalendar) | 为此格式设置日历 |
Date parse(String source) | 将给定的字符串解析成日期/时间 |
格式化样式主要通过DateFormat常量设置
SHORT
:如18-10-15 上午9:30
FULL
:如2018年10月15日 星期一 上午09时30分43秒 CST
MEDIUM
:如2018-10-15 9:30:43
LONG
:如2018年10月15日 上午09时30分43秒
2.SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。
SimpleDateFormat()
:默认格式,默认语言环境构造
SimpleDateFormat(String pattern)
:指定格式, 默认语言环境构造
SimpleDateFormat(String pattern,Locale locale)
:指定格式,指定语言环境构造
日期/时间格式中的字母及其含义与示例:
字母 | 含义 | 示例 |
---|---|---|
y | 年份。一般用 yy 表示两位年份,yyyy 表示 4 位年份 | 使用 yy 表示的年扮,如 11; 使用 yyyy 表示的年份,如 2011 |
M | 月份。一般用 MM 表示月份,如果使用 MMM,则会 根据语言环境显示不同语言的月份 | 使用 MM 表示的月份,如 05; 使用 MMM 表示月份,在 Locale.CHINA 语言环境下,如“十月”;在 Locale.US 语言环境下,如 Oct |
d | 月份中的天数。一般用 dd 表示天数 | 使用 dd 表示的天数,如 10 |
D | 年份中的天数。表示当天是当年的第几天, 用 D 表示 | 使用 D 表示的年份中的天数,如 295 |
E | 星期几。用 E 表示,会根据语言环境的不同, 显示不 同语言的星期几 | 使用 E 表示星期几,在 Locale.CHINA 语 言环境下,如“星期四”;在 Locale.US 语 言环境下,如 Thu |
H | 一天中的小时数(0~23)。一般用 HH 表示小时数 | 使用 HH 表示的小时数,如 18 |
h | 一天中的小时数(1~12)。一般使用 hh 表示小时数 | 使用 hh 表示的小时数,如 10 (注意 10 有 可能是 10 点,也可能是 22 点) |
m | 分钟数。一般使用 mm 表示分钟数 | 使用 mm 表示的分钟数,如 29 |
s | 秒数。一般使用 ss 表示秒数 | 使用 ss 表示的秒数,如 38 |
S | 毫秒数。一般使用 SSS 表示毫秒数 | 使用 SSS 表示的毫秒数,如 156 |