Date:
java.util
表示特定的瞬间
构造方法:
Date()
分配一个 Date对象并将它初始化,它代表的时间分配给它,测量精确到毫秒
Date(long date)
分配一个 Date对象并将它初始化为代表指定的毫秒数自基准时间被称为“时代”,即1970年1月1日,00:00:00 GMT。
方法:
public long getTime()--获取long类型的毫秒值
参考基准时间来计算
public void setTime(long time)--设置当前Date的毫秒值
总结:
Date<->long:
Date->long:
getTime()
long->Date:
new Date(long time)
setTime(long time)
Calendar:
日历类
java.util包
public abstract class -- 抽象类 不能直接创建对象
获取Calendar的对象:
Calendar calendar = Calendar.getInstance();
属性:
public static final int YEAR -年
public static final int MONTH -月
public static final int DAY_OF_MONTH - 日
public static final int DATE - 日
public static final int HOUR - 0-11
public static final int HOUR_OF_DAY - 0-23
public static final int MINUTE - 分钟
public static final int SECOND - 秒
public static final int MILLISECOND - 毫秒
方法:
public int get(int field)--返回指定字段的数据
public void set(int field,int value)--设置指定字段的值
public abstract void add(int field, int amount)
amount
负数 当前时间往前
正数 当前时间往后
public final Date getTime()--Calendar->Date
public long getTimeInMillis() -- Calendar->long
public final void setTime(Date date) -- Date->Calendar
public void setTimeInMillis(long millis) -- long->Calendar
日期的格式化和解析
格式化:
日期类型->String
解析:
String->日期类型对象
DateFormat:
java.text 包
public abstract class DateFormat - 抽象类
子类:
SimpleDateFormat
SimpleDateFormat :
构造方法:
public SimpleDateFormat()--默认格式来进行格式化和解析
public SimpleDateFormat(String pattern) -- 指定格式来进行格式化和解析
日期格式写法:
yyyy-MM-dd 1999-12-02
yyyy-MM-dd HH:mm:ss 1999-12-02 10:08:26
yyyy/M/dd HH:mm 2021/7/13 10:15
yyyy年M月dd日 2021年7月22日
方法:
格式化:
public final String format(Date date)
解析:
public Date parse(String source)
异常
Throwable
--Error 错误
人为无法解决 不用处理
例如:
StackOverflowError 栈内存溢出错误
--Exception 异常
编译时异常-已检查异常
要求必须处理,否则编译报错无法运行
Exception的子类除RuntimeException及其之类之外都是编译时异常
例如:
CloneNotSupportedException 克隆不支持异常
ParseException 解析异常
运行时异常-未检查异常
可以处理也可以不处理,程序可以运行
RuntimeException及其子类都是运行时异常
例如:
ArithmeticException
ClassCastException
NullPointerException
异常一旦出现,程序默认情况下停止执行,将异常信息打印,之后的代码都无法执行了。
Exception类:
构造方法:
new Exception()--不指定任何内容 异常信息都是空的
new Exception(String message)--传入了异常的描述信息
方法:
getMessage()-获取异常的描述信息
printStackTrace()--打印异常的堆栈跟踪信息
异常的产生:
throw关键字 产生异常
格式:
throw new 异常类名(String message);
注意:
如果异常类型是编译时异常,则throw语句所在的方法必须处理异常(通常通过直接抛出的方式来解决异常)
如果异常类型是运行时异常,则可以不用处理
如果调用的方法有异常抛出,则调用方法的位置也需要处理异常
异常的处理:
1、直接抛
throws关键字在方法上声明异常的抛出
格式:
方法声明 throws 异常类型1,异常类型2,…{}
特点:
throws抛出 导致程序停止运行
main方法如果抛出异常,则抛给虚拟机,虚拟机处理方式是:打印异常的堆栈跟踪信息,停止程序运行
注意:
throws后边可以声明异常类型为Exception 或者Throwable顶级父类
2、try.catch.finally代码块处理异常-捕获
try catch finally关键字
格式一:
try{
可能异常的代码块;
}catch(异常类型 对象名){
处理异常
}
格式二:
try{
可能异常的代码块;
}catch(异常类型1 对象名1){
处理异常
}catch(异常类型2 对象名2){
处理异常
}…
注意:
catch中也可以声明异常类型为Exception Throwable父类类型 简化catch代码块
如果catch有多个,且声明的异常类型存在子父类继承关系,将子类放前边,父类类型放后边
格式三:
try{
可能异常的代码块;
}catch(异常类型1 对象名1){
处理异常
}catch(异常类型2 对象名2){
处理异常
}finally{
无论try中是否抛出异常都要执行的代码块;
}
应用场景:
finally中通常用于进行资源的释放
通常用于IO资源释放
特点:
try中无论是否出现异常,try.catch之后的代码可以正常执行
try中出现异常之后的代码不再执行
总结:
1、throw throws关键字的区别?
作用不同
throw 产生异常
throws 抛出异常-处理异常
内容不同
throw 异常对象
throws 异常类型
数量
throw后只能跟一个异常对象
throws后边写多个异常类型
2、编译时异常 运行时异常
编译时异常要求必须处理
运行时异常 可以处理也可以处理
3、处理异常的两种方式
1、throws直接抛出
2、try.catch捕获异常
适用场景:
如果异常处理不了,直接抛出
如果异常可以处理 且 必须实现不影响后续代码执行 try catch捕获--必须要留下异常的信息
自定义异常:
考虑是编译时异常 还是运行时异常
1、自定义编译时异常
class 异常类名 extends Exception{
提供构造方法
无参
有参
}
例如:
public class MyException extends Exception{
public MyException(){}
public MyException(String message){
//调用父类的有参构造
super(message);
}
}
2、自定义运行时异常
class 异常类名 extends RuntimeException{
提供构造方法
无参
有参
}
例如:
public class MyException extends RuntimeException{
public MyException(){}
public MyException(String message){
//调用父类的有参构造
super(message);
}
}
应用场景:
自定义和业务内容相关的异常