Java中6种常用类的方法
1.System类
System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此要使用这些方法直接 可以通过类名调用。
System常用方法
方法声明 | 功能描述 |
static void exit(int status) | 该方法终止当前正在运行的虚拟机,其中,参数status表示状态码,若状态码非0,则表示异常终止。 |
static void gc() | 运行垃圾回收器,并对垃圾进行回收。 |
static long currentTimeMillis() | 返回以毫秒为单位的当前时间。 |
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
static Properties getProperties() | 获取当前的系统属性 |
static String getProperty(String key) | 获取指定键描述的系统属性。 |
2.Math类
Math是数学操作类,提供了一系列数学运算的静态方法,包括绝对值、三角函数等
方法声明 | 功能描述 |
static double abs (double a)//此方法有(float、int、long)重载 | 返回 double 值的绝对值。 |
static double cbrt(double a) | 返回double值的立方根 |
static double exp(double x) | 返回欧拉数 e 的 double 次幂的值 |
static double expm1(double x) | 返回 ex -1。 |
static double random(double a) | 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 |
static (float,int,long,double)max(a,b) | 返回a b两数的最大值 左边括号的是返回值 |
static (float,int,long,double)min(a,b) | 返回a b两数的最小值 |
static double log(double a) | 返回 double 值的自然对数(底数是 e)。 |
static double pow(double a, double b) | 返回第一个参数的第二个参数次幂的值。 |
static double floor(double a) | 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数 |
3.Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException
Arrays的方法基本都是静态的
常用方法
方法声明 | 功能描述 |
static int binarySearch(数组类型,类型值) | 使用二分搜索法来搜索指定的数组,以获得指定的下标。 |
方法声明功能描述static int binarySearch(数组类型,,int fromIndex, int toIndex,类型值) | 使用二分搜索法来搜索指定的数组的范围,以获得指定的值。(二分查找必须先排序,没找到会返回负数下标) |
static 数组类型 copyOf(数组,int len) | 复制指定的数组,截取或用 0 填充,注:对象数组填充用null(如有必要),以使副本具有指定的长度。 |
static 数组类型 copyOfRange(数据类型[] original, int from, int to) | 将指定数组的指定范围复制到一个新数组。 |
static String deepToString(数组[] a) | 返回指定数组内容的字符串表示形式。 |
static void sort(数组) | 对数组进行升序排序 |
4.Random
主要用处就是取随机数
如果要取x-y之间的随机数 Math.random()*(y-x+i)+x //数学函数里的方法
Random.nextInt(y-x+1)+1;
java.util.Random类用法
1.该类的构造方法:
- Random():构造一个无参的随机数生成器。使用系统时间的毫秒作为默认种子。
- Random(long seed):使用long数据类型的种子构造一个随机数生成器。
2.方法摘要:
boolean nextBoolean() | 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。 |
double nextDouble() | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |
float nextFloat() | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
int nextInt() | 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值. |
int nextInt(int n) | 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值n(不包括)之间均匀分布的 int 值。 |
long nextLong() | 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |
void setSeed(long seed) | 使用单个 long 种子设置此随机数生成器的种子。 |
5.Date
一、Date 类的定义
Date 类位于 java.util 包中,主要用来封装当前的日期和时间
Date 类提供两个构造函数来实例化 Date 对象 (其余构造方法已经过时了)
Date()
使用当前日期和时间来初始化对象
Date(long milliseconds)
接收一个 long 类型的参数,该参数是从 1970-01-01 00:00:00.000 到当前时间的毫秒数
Date date = new Date();
// 打印Date对象
// Sat:表示周六
// Aug:表示八月
// GMT:格林威治标准时间
// GMT+08:00:东八区即标准北京时间
System.out.println(date); // Sat Aug 11 17:03:32 GMT+08:00 2018 1234567
二、Date 类的常用方法
getTime()
获取时间毫秒数
Date date = new Date();
System.out.println(date.getTime()); // 1533978518866
12
setTime(long milliseconds)
设置时间毫秒数
Date date = new Date();
date.setTime(100);
System.out.println(date); // Thu Jan 01 08:00:00 GMT+08:00 1970123
equals(Object obj)
用于比较两个时间是否相等
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-10 08:08:123”);
Date date2 = sdf.parse(“2018-08-10 08:08:123”);
System.out.println(date1.equals(date2)); // true
1234
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-10 08:08:123”);
Date date2 = sdf.parse(“2018-08-11 08:08:123”);
System.out.println(date1.equals(date2)); // false
1234
after(Date when)
校验目标日期是否在参数日期之后
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-10 08:08:123”);
Date date2 = sdf.parse(“2018-08-09 08:08:123”);
System.out.println(date1.after(date2)); // true1234
before(Date when)
校验目标日期是否在参数日期之前
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-10 08:08:123”);
Date date2 = sdf.parse(“2018-08-09 08:08:123”);
System.out.println(date1.before(date2)); // false
1234
compareTo(Date anotherDate)
对两个Date对象进行比较
如果目标日期等于参数日期,则返回 0
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-10 08:08:123”);
Date date2 = sdf.parse(“2018-08-10 08:08:123”);
System.out.println(date1.compareTo(date2)); // 0
1234
如果目标日期在参数日期之后,则返回 1
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-11 08:08:123”);
Date date2 = sdf.parse(“2018-08-10 08:08:123”);
System.out.println(date1.compareTo(date2)); // 1
1234
如果目标日期在参数日期之前,则返回 -1
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date1 = sdf.parse(“2018-08-09 08:08:123”);
Date date2 = sdf.parse(“2018-08-10 08:08:123”);
System.out.println(date1.compareTo(date2)); // -1
1234
toInstant()
Instant 输出的是标准时间,即格林威治标准时间,而 Date 输出的是北京时间,两者相差 8 个小时
返回一条时间线上与此日期相同的一个点
Date date = new Date();
// Instant:java8的新特性,表示时间线中的一个特定时刻
Instant instant = date.toInstant();
// 标准时间,精确到纳秒
System.out.println(instant); // 2018-08-11T03:11:59.110Z
// 将标准时间修改为北京时间,即+8小时
System.out.println(instant.plusMillis(TimeUnit.HOURS.toMillis(8))); // 2018-08-11T11:11:59.110Z
// 北京时间,精确到毫秒
System.out.println(date); // Sat Aug 11 11:11:59 GMT+08:00 2018
————————————————
6.Cnlendar
Calendar 类常用方法的记录:
获取时间
// 使用默认时区和语言环境获得一个日历
Calendar cal = Calendar.getInstance();
// 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
System.out.println("年:" + cal.get(Calendar.YEAR));
System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal.get(Calendar.MINUTE));
System.out.println("秒:" + cal.get(Calendar.SECOND));123456789
今天是 2018 年 2 月 12 日,运行结果:
年:2018
月:2
日:12
时:15
分:57
秒:39123456
设置时间
月份的下标从 0 开始,设置时同样需要注意,比如我们设置为 2 月 15 日除夕当晚的倒计时的最后一秒: 2018-02-15 23:59:59
可以这样:
Calendar cal = Calendar.getInstance();
// 如果想设置为某个日期,可以一次设置年月日时分秒,由于月份下标从0开始赋值月份要-1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2018, 1, 15, 23, 59, 59);1234
或者也可以单个字段一一设置:
// 或者6个字段分别进行设置,由于月份下标从0开始赋值月份要-1
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
cal.set(Calendar.DAY_OF_MONTH, 15);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());12345678
打印的时间结果为:
Thu Feb 15 23:59:59 CST 20181
时间计算
add方法:
比如在除夕当晚最后一秒,add 一秒:
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());
cal.set(2018, 1, 15, 23, 59, 59);
cal.add(Calendar.SECOND, 1);
System.out.println(cal.getTime());12345
打印时间结果如下,日期会自动进入下一天:
Thu Feb 15 23:59:59 CST 2018
Fri Feb 16 00:00:00 CST 201812
再比如 1 月 31 号的时候,月份加一,会出现怎样结果:
Calendar cal = Calendar.getInstance();
cal.set(2018, 1, 31, 8, 0, 0);
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, 1);
System.out.println(cal.getTime());12345
运行结果:
Wed Jan 31 08:00:00 CST 2018
Wed Feb 28 08:00:00 CST 201812
说明 add 月份时,会将不存在的日期归为当月日历的最后一天。
————————————————