内部类
成员内部类 匿名内部类 静态内部类 局部内部类
内部类:就是在一个类中定义一个类
内部类可以直接访问外部类的成员,外部类需要创建对象访问内部类的成员
1、成员内部类:类似于外部类的成员,需要创建外部类对象后才能使用
2、局部内部类,在方法中定义的类,所以外界无法直接使用,需要在方法内部创建对象并使用
该类可以直接访问外部类的成员,也可以访问方法的局部变量
内建在方法中的类,超出了创建它的作用域之外是不可用的
匿名内部类可以实现局部内部类的功能,需要局部内部类的理由是:
1)由一个具名的构造器,或者需要重载构造器,而匿名内部类只能用于实例初始化
2)需要不止一个对象
匿名内部类,前提是需要存在一个类和接口,类可以是具体类或者是抽象类隐藏代码机制,将类置于其他类的内部;
了解外围类,能够与之通信(拥有外部元素的访问权)
匿名内部类:如果定义一个匿名内部类,并且希望它使用一个在其外部定义的对象,那么编译器会要求其参数是final,因为参数是在匿名类内部使用在匿名类中不可能有命名构造
一个内部类被嵌套多少层都没有关系,它能透明地访问所有它所嵌入的外围类的所有成员下在java中,可以执行相同的行为,但是只有一个类可以具体实现
一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类对,所以可以认为内部类提供了某种进入其外围类的接口
每一个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个实现,对于内部类没有影响
Java的嵌套类是static内部类
1) 要创建嵌套类的对象,并不需要其外围类的对象
2) 不能从嵌套类的对象中访问非静态的的外围类对象(这是静态成员的一个特点)
基本数据类型的包装
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作数据
自动拆装箱:Java拆装箱就是Java相应的基本数据类型和引用类型的互相转化 ,顶层会自动实现类型的转化,而不需要用户自身通过代码去作操作。
BigInteger和BigDecimal:代表大整数类用于对大整数进行操作/代表大浮点型
异常处理 特例 RuntimeException
异常是在程序运行过程中产生的使程序终止正常运行的错误
异常的排序方法应该是特例化程度更高的优先排在前面
Error:编译和系统错误,一般不要理会
Exception:是可以抛出的异常 Java类库、用户方法以及运行故障中都有可能抛出异常(编译期异常/运行期一异常)
只有在你知道如何处理异常的情况下才捕获异常
异常处理机制使得将代码和代码出现的问题的处理分离开来
当要把除内存之外的资源恢复到初始状态时候,finally非常重要当
涉及到break和continue和return语句,finally子句也会执行
派生类构造器不能捕获基类构造器抛出的异常(自己的东西自己处理)