1、System类中时间API currentTimeMillis():返回当前时间到1970年1月1日0时0分0秒的毫秒数(时间戳)
2、Date类
java.util.Date类: 空参构造器: toString():返回当前的年、月、日、时、分、秒 getTime():返回当前对应的对象时间戳(毫秒数) 指定毫秒数构造器: toString():返回指定时间戳的年、月、日、时、分、秒
java.sql.Daet类: 实例化: toString():返回指定时间戳的年、月、日
将java.util.Date对象转化为java.sql.Date对象 ①
Date date1 = new java.sql.Date(2343243242323L); java.sql.Date date2 = (java.sql.Date)date1;②
Date date = new Date(); java.sql.Date date2 = new java.sql.Date(date.getTime());3、SimpleDateFormat对Date类的处理 普通空参构造器: ①格式化:日期–>字符串 String format(Date date)方法的调用 ②解析:字符串–>日期 Date parse(String str)方法的调用 方法中格式化字符串的要求"20-2-18 上午11:43" String参数的构造器:
4、Calender类(抽象类) 实例化方法有两个: ①调用Calender.getInstance()静态方法 ②调用子类GregorianCalender类的构造器
常用方法: int get(Calender.静态常量):获取常用的日期信息 void set(Calender.静态常量, int changeInt):设置相关的日期信息 void add(Calender.静态常量, int amount):将相关的日期信息增加/减少一定大小 Date getTime():将获取到的日历类转化为Date类 void setTime(Date date):将Date类设置为日历类
5、LocalDate类、LocalTime类、LocalDateTime类 获取当前日期:LocalDate localDate = LocalDate.now(); 获取当前时间:LocalTime localTime = LocalTime.now(); 获取当前时间+日期:LocalDateTime localDateTime = LocalDateTime.now(); 设置当前时间的年、月、日、时、分、秒,并且没有偏移量:LocalDateTime localDateTime = LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second);
getXxx():获取相关的日期信息 withXxx():修改相关的日期信息(不可变性,一个变量的修改并不影响其他变量的值) plusXxx():增加相关日期信息大小 minusXxx():减小相关日期信息大小
6、Instant类 Instant now():获取本初子午线对应的标准时间 OffsetDateTime atOffset(ZoneOffset.ofHours(int time)):添加时间偏移量 long toEpochMilli():获取对应的时间戳 Instant ofEpochMilli(long millis):根据毫秒数,返回对应的Instant实例
7、DateTimeFormatter类 实例化: ①预定义的标准格式,如ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; ②本地化相关的格式,如:ofLocalizedDateTime(FormatStyle.LONG/FormatStyle.FULL) DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG); ③自定义的格式,如:ofPattern(“yyyy-MM-dd hh:mm:ss”) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"); ①格式化:日期–>字符串 String format(Date date)方法的调用 ②解析:字符串–>日期 TemporalAccessor parse(String str)方法的调用
8、Java比较器:Comparable接口或Comparator接口 Comparable接口 自然排序 ①String、包装类等实现了Comparable接口,重写了compareTo()方法,给出了比较两个对象大小的 ②重写compareTo(obj)规则 如果当前对象形参大于obj形参,返回正数;如果当前对象形参小于obj形参,返回负数;,如果相等,返回0 ③对于自定义类如果需要排序,则需要实现Comparable接口,重写其中的compareTo(obj)方法,在方法中指明如何排序
Comparator接口 定制排序 重写compare(Object o1, Object o2)规则 如果o1大于o2,返回正数;如果o1小于o2,返回负数;,如果相等,返回0
两者的对比: Comparable接口实现的方式一旦确定,可以保证Comparable接口实现类的对象在任何位置都可以比较大小;Comparator接口属于临时性的比较
9、System类 void exit(int status):退出程序;status是0的话正常退出,非0为异常退出 void gc():请求系统进行垃圾回收
10、Math类 abs 绝对值 acos、asin、atan、cos、sin、tan 三角函数 sqrt 平方根 pow(double a,double b) a的b次幂 log 自然对数 exp e为底指数 max(double a,double b) min(double a,double b) random() 返回0.0到1.0之间的随机数 round() 四舍五入
11、BigInteger、BigDecimal 如果一个数已经大于long的范围了,那么可以使用BigInteger这个类
如果一个数字精度要求非常高,double都无法满足的话,那么就可以使用BigDecimal这个类
12、枚举类 使用场景:需要定义一组常量时,可以使用;类的对象只有有限个并且是确定的 如果枚举类对象只有一个,那么可以作为单例模式的实现方式
定义枚举类方式: ①JDK5.0之前:自定义枚举类
public class SeasonTest { public static void main(String[] args) { Season season = Season.SPRING; System.out.println(season); } } class Season{ //声明Season对象的属性 private String seasonName; private String seasonDesc; //私有化构造器 private Season(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //提供当前枚举类的多个对象 public static final Season SPRING = new Season("春天", "春暖花开"); public static final Season SUMMER = new Season("夏天", "夏日炎炎"); public static final Season AUTUMN = new Season("秋天", "秋高气爽"); public static final Season WINTER = new Season("冬天", "冰天雪地"); //获取枚举类对象属性 public String getSeasonName(){ return seasonName; } public String getSeasonDesc(){ return seasonDesc; } //提供toString() @Override public String toString() { return "Season{" + "seasonName = " + seasonName + ", seasonDesc = " + seasonDesc + "}"; } }②JDK5.0之后:使用enum关键字定义枚举类 定义的枚举类默认继承于java.lang.Enum类
public class SeasonTest { public static void main(String[] args) { Season season = Season.SPRING; System.out.println(season); } } //用enum关键字创建枚举类 enum Season{ //提供当前枚举类的对象,多个对象之间用","隔开,末尾的对象";"结束 SPRING("春天", "春暖花开"), SUMMER("夏天", "夏日炎炎"), AUTUMN("秋天", "秋高气爽"), WINTER("冬天", "冰天雪地"); //声明Season对象的属性 private final String seasonName; private final String seasonDesc; //私有化构造器 private Season(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //获取枚举类对象属性 public String getSeasonName(){ return seasonName; } public String getSeasonDesc(){ return seasonDesc; } //提供toString() // @Override // public String toString() { // return "Season{" + "seasonName = " + seasonName + ", seasonDesc = " + seasonDesc + "}"; // } }Enum类的常用方法 values():返回枚举类中所有对象的数组 valueOf(String str):返回对象常量名为str的对象(若不存在str名的对象,则会抛出异常IllegalArgumentException) toString():返回当前枚举类对象常量的名称
使用enum关键字定义的枚举类实现接口的情况 ①实现接口,实现方法
②实现接口,让枚举类每个对象实现接口中的方法
13、注解(Annotation)
①JDK5.0新增的功能
②是代码中的特殊标记,用于在代码中注入补充信息
③使用方面: 1)文档相关的注解 2)在编译时进行格式检查(JDK内置的三个基本注解): @Override限定重写父类方法,只能用于方法 @Deprecated用于表示所修饰的元素(类、方法)已过时。通常是因为所修饰的结构危险或存在更好的选择 @SuppressWarnings抑制编译器警告 3)跟踪代码依赖性,实现替代配置文件功能
④如何自定义注解:参照@SuppressWarnings定义 1)声明为@interface 2)内部定义成员,通常使用value表示 3)可以指定成员的默认值,使用default定义 4)如果自定义注解没有成员,表明是一个标识作用 5)如果注解里有成员,那么在使用注解时,需要指定成员的值 6)自定义注解必须配上注解的信息处理流程(使用反射)才有意义
public @interface MyAnnocation { String value() default "hello"; }⑤JDK提供的四种元注解(对现有的注解进行解释说明的注解) Retention:指定所修饰的Annocation的生命周期:SOURCE、CLASS(默认行为)、RUNTIME(只有声明为RUNTIME的生命周期的注解,才能通过反射获取) Target:用于指定被修饰的Annocation能用于修饰哪些程序元素 Documented:表示所修饰的注解在被javadoc解析时,保留下来 Inherited:被其修饰的Annocation将具有继承性
⑥通过反射获取注解信息
⑦JDK8新特性:可重复注解、类型注解 可重复注解: 1)在MyAnnocation上声明@Repeatable,成员值为MyAnnocations.class 2)MyAnnocation的Target和Retention等元注解和MyAnnocations相同 类型注解: ElementType.TYPE_PARAMETER:表示该注解可以写在类型变量的声明语句中(如:泛型声明) ElementType_TYPE_USE:表示该注解能写在使用类型的任何语句中