今日学习总结
1、SimpleDateFormat
2、Calendar工具类
3、异常
4、Throwable的成员方法
5、编译时异常和运行时异常的区别(异常处理之try…catch…)
6、异常处理之throws
7、自定义异常
1、SimpleDateFormat工具类
*A.格式化,从Date到String
*a. Date d =new Date( );
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss”);
String s = sdf.format(d);
*B.从String到Date
*a. String s = "2048-08-09 11:11:11";
//ParseException
SimpleDateFormat sdf2 = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//格式要和字符串对应,否则会报错
Date dd2 = sdf2.parse(ss);
2、Calendar工具类
*A.Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
*a.//获取对象 public int get(int field);返回给定日历字段的值
Calendar c = Calendar.getInstance();//多态的形式.当前时间
int year = c.get(Calendar.YEAR);
int month= c.get(Calendar.YEARMONTH)+1; //月份从0开始,注意月份加一
int date = c.get(Calendar.DATE);
*B.常用方法
*a.public int get(int field);如A
*b.public abstract void add(int field,int amount);根据日历规则,将指定的时间量添加或
减去给定的日历字段
c.add(Calendar.YEAR,-3); //减三年
c.add(Calendar.DATE,-5);//五天前
*c.public void set(int year,int month,int date);设置当前日历的年月日
c.set(2048,11,11);设置为2048年12月11日
3、异常
*A.异常体系
*a.Throwable
*1.Error //严重问题,不需要处理
*2.Exception //称为异常类,表示程序本身可以处理的问题
*.RuntimeException //在编译期是不检查的,出现问题后,需要我们回来修改代码
*.非RuntimeException //编译器就必须处理,否则程序不能通过编译
*B.JVM的默认处理方案
*a.如果程序出现异常,我们没有做任何处理,最终JVM会做默认的处理
*1.把异常的名称。异常的原因及异常出现的位置等信息输出在控制台
*2.程序停止执行
*C.异常处理之 try...catch...
*a.格式
try {
可能出现异常的代码;
} catch(异常类名 变量名){
异常的处理代码;
}
*b.执行流程
*.程序从try里面的代码开始执行
出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统
当Java运行时系统接收到异常对象时,回到catch中找匹配的异常类,找到后进行异常处理
执行完毕之后,程序还可以继续往下执行
*c.实例
try{
int[ ] arr = {1,2,3};
System.out.println(arr[3]); //new ArrayIndexOutOfBoundsException( );
} catch(ArrayIndexOutOfBoundsException e){
System.out.println(“你访问的数组的索引不存在”);
e.printStackTrcae( );
}
4、Throwable的成员方法
*A. 方法
*a.getMessage()//即返回异常的原因
*b. toString() //包含异常类和异常原因 即包含了mseeage
*c.printStackTrace() //输出最全的错误信息 一般都用这个
5、编译时异常和运行时异常的区别
Java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常
所有的RuntimeException类及其子类被称为运行时异常,其它异常都是编译时异常
*A.编译时异常(受检异常):必须处理,否则程序就会发生错误,无法通过编译
*a.如ParseException //日期格式转换时
*.使用try...catch...处理
*B.运行时异常(非受检异常):无需显示处理,也可以和编译时一样处理
*a.如ArryIndexOutOfBoundsException //数组越界异常
*.修改代码或者使用try...catch...处理
6、异常处理之throws
虽然我们通过try…catch…可以对异常进行处理,但并不是所有情况我们都有权限进行异常处理
针对这种情况,Java提供了throws的处理方案
*A.格式
*. throws 异常类名; //ps:这个格式是跟在方法括号后面
*B.处理选择
*a.编译时异常必须进行处理:throws和try...catch...两种方案,如果用throws,将来谁调用谁处理
*b.运行时异常可以不处理:出现问题后回来修改代码
*C.注意事项
*a.使用throws异常处理以后程序不会继续往下执行,而try...catch...可以
7、自定义异常
*A.格式
*.public class 异常类名 extends Exception {
无参构造;
带参构造;
}
*B.throws和thorw的区别
*a.throws
*.跟在方法声明后面,跟的是异常类名
*.表示抛出异常,由该方法的调用者来处理
*.表示出现异常的一种可能性,并不一定会发生这些异常
*b.throw
*.用在方法体内,跟的是异常对象名
*.表示抛出异常,由方法体内的语句处理
*.执行throw一定抛出了某种异常
范例: