1.成员内部类:一个内部类作为一个外部类的成员而存在,此时该内部类称为外部类的成员内部类;内部类都是用默认修饰符。
2.静态内部类:一个类被static修饰,这个类被称为静态内部类。
3.方法内部类:把一个类定义到一个方法中,则成为方法内部类。方法的局部变量进入方法内部类时,被final修饰,出了方法,则去除final。
4.匿名内部类:当一个类只需使用一次,可以把该类声明为匿名类,匿名类一般和内部类结合,形成匿名内部类;匿名内部类一定要实现接口。
5:异常处理:
1.传统处理异常方式:使用if else判断执行造成执行效率降低,判断逻辑和业务逻辑交织在一起,可维护性差。
2.异常:异常是指在程序的运行过程中所发生的的不正常的情况,他会中断正在运行的程序。
异常处理机制:
java中通过异常处理机制为程序提供异常处理能力,保持程序继续运行而不中断。
3.异常处理的关键字:try;...catch/try;...catch......finall.
try;...catch:把可能产生的异常代码放到try代码块中,catch代码块负责捕获并处理异常。
Exception是所有类的直接或间接的父类。
6.异常常见方法:
printstacktrace:打印异常的执行堆信息,
getmessage:返回异常的描述信息。
异常类型不匹配:
多重catch.
7.把有可能产生异常的代码放到try中,catch负责匹配并处理异常,finally块用于进行收尾工作(关闭数据库,关闭文件,释放内存等),不管发生什么异常finally都会执行。常用语收尾工作。
8.异常的分类:
9.throwable类是Java语言中的所有错误(error)或异常(exception)的父类,只有当对象是此类的实例时,才能 通过Java虚拟机或者Java throw语句抛出。
error类表示错误类,无法靠程序恢复错误,jvm无内存,崩溃这些。
exception表示异常类,可以通过Java异常处理机制处理,exception根据 是否处理分为两大类,
1.runtimeexception:运行时异常,不需要必须处理,是所有运行异常的父类。’
2.checkedexception:检查时异常。必须处理,否则编译不通过。
常见的运行时异常:
ArithmeticException:数学计算异常。比如除数为0
InputMismatchException:输入不匹配异常
ArrayIndexOutofBoundsException:数组下标越界异常。
NullPointException:空指针异常,对象没有初始化就使用时,jvm会抛出该异常
IllegalArgumentException:非法参数异常。
ClassCastException:强制类型转换异常。
NumberFormatException:数字格式化异常。比如把“abc”格式化成数字。
常见的检查时异常:
ClassNotFoundException:类没有被发现异常。
SQLException:数据库相关异常
IOException:IO操作异常
ParseException:解析错误异常
FileNotFoundException:文件未发现异常。
10.运行时异常和检查时异常的区别:运行时异常不强制要求作出处理,检查时异常是必须作出处理。
11.声明常量。
throws关键字:当一个方法可能存在异常,而此时自身又无法更好的处理,可以交给外界处理,使用throws声明并抛出异常。开发者可以根据需要声明检查时异常和运行时异常,如果调用处也不知道如何处理异常,可选择继续声明异常,这个过程称为异常上抛。
12.声明异常和重载的关系:没有任何关系。
方法重载:1.方法名相同。2.参数列表不同(个数,类型,顺序)。3.和返回值,修饰符,声明异常无关。
13.声明异常和重写的关系:有点关系。
父类方法声明了异常,子类可以也可以 不声明任何异常或父类不声明由子类声明异常.
14.手动抛出异常:throw,除了系统自动抛出异常外,有些问题需要开发者手动抛出,使用关键字throw。
15.自定义异常:如果开发者需要手动抛出的异常系统不存在,可以自定义异常,如要自定义异常,首先要确定异常类型,如果异常是运行时异常,必须继承runtimeexception或其子类,如是检查时异常,必须继承exception或其子类,异常的命名方式需要参考系统命名方式,以exception结尾。