目录
一、API概述
二、Object类
1.public String toString()
2.public boolean equals(Object o)
三、Arrays类
1.public static String toString(类型[] a)
2.public static void sort(类型[] a)
3.public static void sort(类型[] a, Comparator c)
4.public static int binarySearch(int[] a, int key)
四、Objects类
1.public static boolean equals(Object a, Object b)
2.public static boolean isNull(Object obj)
五、StringBuilder类
1.StringBuilder 构造器
①public StringBuilder()
②public StringBuilder(String str)
2.StringBuilder常用方法
①public StringBuilder append(任意类型)
②public StringBuilder reverse()
③public int length()
④public String toString()
六、Math类
1.public static int abs(int a)
2.public static double ceil(double a)
3.public static double floor(double a)
4.public static int round(float a)
5.public static int max(int a, int b)
6.public static double pow(double a, double b)
7.public static double random()
七、System类
1.public static void exit(int status)
2.public static long currentTimeMills()
3.public static void arraycopy(数据源数组,起始索引,目的数组,起始索引,拷贝个数)
八、BigDecimal类
九、Date类
1.概述
2.Date的构造器
①public Date()
②public Date(long time)
3.Date的常用方法
①public long getTime()
②public void setTime(long time)
十、SimpleDateFormat
1.构造器
public SimpleDateFormat(String pattern)
2.格式化方法
①public final String format(Date date)
②public final String format(Object time)
③public Date parse(String source)
十一、Calendar类
1.概述
2.Calendar日历类创建日历对象的方法
public static Calendar getInstance()
3.Calendar常用方法
①public int get(int field)
②public void set(int field,int value)
③public void add(int field,int amount)
④public final Date getTime()
⑤public long getTimeInMillis()
十二、JDK8新增日期类
1.LocalDate/LocalTime/LocalDateTime
①区别
②获取信息的API
③LocalDateTime的转换API
④修改相关的API
2.Instant时间戳
3. DateTimeFormatter
4.Duration/Period
①Period
②Duration
5.ChronoUnit
API,即应用程序接口(JAVA已经写好的方法)
一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。
Object作为所有类的父类,提供了很多常用的方法给每个子类对象拿来使用。
默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息
默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false
equals存在的意义是为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)
数组操作工具类,专门用于操作数组元素
返回数组的内容(字符串形式)
对数组进行默认升序排序
使用比较器对象自定义排序
设置Comparator接口对应的比较器对象,来定制比较规则。
public static void main(String[] args){
Integer[] age = {34, 12, 42, 23};
/*
规则: 如果认为左边数据 大于 右边数据 返回正整数
如果认为左边数据 小于 右边数据 返回负整数
如果认为左边数据 等于 右边数据 返回0
按照这个规则就会升序排序,返过来就会降序排序
*/
//Comparator是接口,所以在这里使用匿名内部类实现该接口
Arrays.sort(age, new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1 > o2)
return 1;
else if(o1 < o2)
return -1;
return 0;
//若直接return o1-o2 则默认升序
//若直接return o2-o1 则默认降序
}
});
System.out.println(Arrays.toString(age));
}
二分搜索数组中的数据,存在返回索引,不存在返回-1
比较两个对象的,底层会先进行非空判断,从而可以避免空指针异常。再进行equals比较
与Object的equal相比,比较的结果是一样的,但是Objects提供的equals更安全
判断变量是否为null ,为null返回true ,反之
StringBuilder是一个可变的字符串的操作类,我们可以把它看成是一个对象容器。
String是不可变类型,StringBuilder是可变类型,StringBuilder可以提高效率,如拼接、修改
但StringBuilder只是拼接字符串的手段,一般还是会使用String
故会使用String rs = s.toString() 其中s是StringBuilder类型
创建一个空白的可变的字符串对象,不包含任何内容
创建一个指定字符串内容的可变字符串对象
添加数据到对象末尾,并返回StringBuilder对象本身
支持链式编程,即连续.append().append().append()
将对象的内容反转,即反序输出
返回对象内容长度
通过toString()就可以实现把StringBuilder转换为String
该类的成员都是静态的,可以直接使用,不需要创建对象
常用方法:
获取参数绝对值
向上取整
向下取整
四舍五入
获取两个int值中较大的值
返回a的b次幂的值
返回值为double的随机值,范围[0.0, 1.0)
System的功能是通用的,直接用类名即可,System不能被实例化
常用方法:
终止当前运行的Java虚拟机,非0表示异常终止
返回当前系统的时间毫秒值形式
计算机起始时间:1970年1月1日 00:00:00
数组拷贝
用于解决浮点型运算精度失真的问题
(我实在是不太会,建议看看b站和API文档)
Date类代表当前所在系统的日期时间信息。
创建一个Date对象,代表的是系统当前此刻日期时间。
把时间毫秒值转换成Date日期对象。
返回从1970年1月1日 00:00:00走到此刻的总的毫秒数
设置日期对象的时间为当前时间毫秒值对应的时间
代表简单日期格式化,可以用来把日期时间格式化成为我们想要的形式
创建简单日期格式化对象,并封装格式化的形式信息
将日期格式化成日期/时间字符串
将时间毫秒值式化成日期/时间字符串
解析字符串时间成为日期对象
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat simpleDate = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
System.out.println(simpleDate.format(date));
System.out.println(simpleDate.format(date.getTime()));
Date date2 = simpleDate.parse("22-10-26 18:21:32");
System.out.println(date2);
}
Calendar代表了系统此刻日期对应的日历对象。
Calendar是一个抽象类,不能直接创建对象。
calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化。
获取当前日历对象
取日期中的某个字段信息。
public static void main(String[] args){
Calendar calendar = Calendar.getInstance();
//使用Calendar中的常量填在int field的位置
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)); //月份是从0开始记的,所以输出时会少1
System.out.println(calendar.get(Calendar.DATE));
System.out.println(calendar.get(Calendar.HOUR));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
}
修改日历的某个字段信息。
为某个字段增加/减少指定的值
拿到此刻日期对象
拿到此刻时间毫秒值
LocalDate:不包含具体时间的日期。
LocalTime:不含日期的时间。
LocalDateTime:包含了日期及时间。
//静态方法,根据当前时间创建对象
LocaDate localDate = LocalDate.now();
LocalTime llocalTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
//静态方法,指定日期/时间创建对象
LocalDate localDate1 = LocalDate.of(2099 , 11,11);
LocalTime localTime1 = LocalTime.of(11, 11, 11);
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
public int geYear() 获取年
public int getMonthValue() 获取月份(1-12)
Public int getDayOfMonth() 获取月中第几天
Public int getDayOfYear() 获取年中第几天
Public DayOfWeek getDayOfWeek() 获取星期
public LocalDate toLocalDate() 转换成一个LocalDate对象
public LocalTime toLocalTime() 转换成一个LocalTime对象
plusDays, plusWeeks, plusMonths, plusYears
向当前 LocalDate 对象添加几天、 几周、几个月、几年
minusDays, minusWeeks, minusMonths, minusYears
从当前 LocalDate 对象减去几天、 几周、几个月、几年
withDayOfMonth, withDayOfYear, withMonth, withYear
将月份天数、年份天数、月份、年 份 修 改 为 指 定 的 值 并 返 回 新 的 LocalDate 对象
isBefore, isAfter
比较两个 LocalDate
Instant instant = Instant.now();
System.out.println("当前时间戳是:" + instant);
Date date = Date.from(instant);
System.out.println("当前时间戳是:" + date);
instant = date.toInstant();
System.out.println(instant);
正反都能调用format方法,即LocalDateTime对象和DateTimeFormatter对象都能调用format方法
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);//2021-03-01T15:09:17.444190900
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String ldtStr = ldt.format(dtf);
System.out.println(ldtStr);//2021-03-01 15:09:17
String ldtStr1 = dtf.format(ldt);
System.out.println(ldtStr1);//2021-03-01 15:09:17
用于计算两个日期间隔
LocalDate today = LocalDate.now();
System.out.println(today); // 2021-03-01
LocalDate birthDate = LocalDate.of(1995, 1, 11);
System.out.println(birthDate); // 1995-01-11
Period period = Period.between(birthDate, today);
System.out.printf("年龄 : %d 年 %d 月 %d 日", period.getYears(), period.getMonths(), period.getDays());
用于计算两个时间间隔
LocalDateTime today = LocalDateTime.now();
System.out.println(today);
LocalDateTime birthDate = LocalDateTime.of(1990,10,1,10,50,30);
System.out.println(birthDate);
Duration duration = Duration.between(birthDate, today);//第二个参数减第一个参数
System.out.println(duration.toDays());//两个时间差的天数
System.out.println(duration.toHours());//两个时间差的小时数
System.out.println(duration.toMinutes());//两个时间差的分钟数
System.out.println(duration.toMillis());//两个时间差的毫秒数
System.out.println(duration.toNanos());//两个时间差的纳秒数
用于比较所有的时间单位
LocalDateTime today = LocalDateTime.now();
System.out.println(today);
LocalDateTime birthDate = LocalDateTime.of(1990,10,1,10,50,30);
System.out.println(birthDate);
System.out.println("相差的年数:" + ChronoUnit.YEARS.between(birthDate, today));
System.out.println("相差的月数:" + ChronoUnit.MONTHS.between(birthDate, today));
System.out.println("相差的周数:" + ChronoUnit.WEEKS.between(birthDate, today));
System.out.println("相差的天数:" + ChronoUnit.DAYS.between(birthDate, today));
System.out.println("相差的时数:" + ChronoUnit.HOURS.between(birthDate, today));
System.out.println("相差的分数:" + ChronoUnit.MINUTES.between(birthDate, today));
System.out.println("相差的秒数:" + ChronoUnit.SECONDS.between(birthDate, today));
System.out.println("相差的毫秒数:" + ChronoUnit.MILLIS.between(birthDate, today));
System.out.println("相差的微秒数:" + ChronoUnit.MICROS.between(birthDate, today));
System.out.println("相差的纳秒数:" + ChronoUnit.NANOS.between(birthDate, today));
System.out.println("相差的半天数:" + ChronoUnit.HALF_DAYS.between(birthDate, today));
System.out.println("相差的十年数:" + ChronoUnit.DECADES.between(birthDate, today));
System.out.println("相差的世纪(百年)数:" + ChronoUnit.CENTURIES.between(birthDate, today));
System.out.println("相差的千年数:" + ChronoUnit.MILLENNIA.between(birthDate, today));
System.out.println("相差的纪元数:" + ChronoUnit.ERAS.between(birthDate, today));