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 月份时,会将不存在的日期归为当月日历的最后一天。
————————————————