一、类中定义类数组
(1)当一类中的成员,做为另一种事物的时候,这个成员就能够定义为内部类.app
(2)分类:①成员内部类函数
②静态内部类spa
③私有内部类指针
④局部内部类orm
⑤匿名内部类 对象
⑥Lambda表达式 blog
2、成员内部类继承
(1)一个类定义在外部类的成员位置就为成员内部类,具备类的特色,继承,实现...成员内部类具备成员的特色,被成员修饰符修饰。接口
(2)注意:①在成员内部类中不能定义静态内容,除了静态常量,静态内部类才能任意定义静态内部。
②在成员内部类中可使用外部类中的成员,包括私有的,静态的。
③在外部类中能够跟随成员内部类的对象使用成员内部类的成员。
③成员内部类的对象性须要经过外部类对象构建 外部类名.内部类类名 引用 = new 外部类().new 内部类()。
⑤跟随内部类的对象使用内部类的成员,注意访问权限。
3、静态内部类:
(1)能够定义静态内容(成员),成员内部类中不能够直接定义静态内容除了静态常量之外。
(2)静态内部类中能够直接使用外部类中静态内容,须要经过外部类对象使用外部类中的成员(由于内部类自己是静态的)。
(3)外部类中能够直接经过内部类对象使用内部类成员,能够经过内部类的类名使用内部类静态内容。
(4)其余类中使用静态内部类中内容:
①静态内部类中的静态内容 : 外部类类名.内部类类名.静态内容
②静态内部类中的成员内容: new 外部类类名.内部类类名(); 经过内部类对象调用它成员。
4、私有内部类
只能在当前外部类中经过内部类对象使用。
5、局部内部类
(1)不能被成员修饰符等修饰(public,private,protected,static)。
(2)局部内部类中不能定义静态内容,除了静态常量。
(3)局部内部类中能够直接使用外部类成员,可使用所在方法中的局部变量。
(4)局部内部类智能在当前所在的方法中经过内部类对象使用,其余位置没法使用。
(5)在局部内部类中使用了所在方法中的局部变量|形参,这个局部变量会默认被final修饰。
(6)jdk8开始默认被final修饰,jdk7及以前须要显示被final修饰
6、匿名内部类
(1)做用: 用来简化没有自己本身做用的实现类 | 子类。
(2)上层 : 接口 | 抽象类。
7、Lambda 表达式
jdk8新增lambda表达式
(1)做用: 为了简化匿名内部类对象
(2)前提: 函数式接口
(3)函数式接口 : 只有一个必须被重写的抽象方法的接口
(4)强制检测是否为函数式接口:注解: @FunctionalInterface
(5)语法:
()->{}
() : 匹配要重写的抽象方法的参数列表
-> : 箭头函数 箭头符号
{} : 要重写的抽象方法的方法体
8、异常:
程序没法正常执行完毕
(1)异常体系:
Throwable
/ \
Error Exception
(2)Error : 错误,通常由虚拟机生成并脱出,无须要程序猿管理
(3)Exception : 异常
①CheckedException 编译时异常|检查时异常: 发生在程序编译期间程序若是遇到编译时异常没有处理,程序没法正常运行
②RuntimeException 运行时异常 : 发生程序运行期间通常能够经过加强程序健壮性的代码处理 if
(4)注意 :若是程序遇到异常没有处理,没法继续执行
(5)常见的一些运行时异常:
①空指针异常 NullPointerException
②数组越界异常 ArrayIndexOutOfBoundsException
③数组长度负数异常 NegativeArraySizeException
④类型转换异常 ClassCastException
⑤数学异常 ArithmeticException
⑥数字格式异常 NumberFormatException