1. 内部类
1.1 一般内部类
- 内部类是定义在其他类内部的类。
- 内部类可以是外部类的成员变量。
- 内部类可以是私有的或静态的,具体取决于访问和使用的需求。
1.2 局部内部类
- 局部内部类是在方法内部定义的,不能有访问修饰符。
- 在局部内部类中使用的变量会隐式变为final。
1.3 匿名内部类
- 匿名内部类是没有名字的类,它可以继承一个类或实现一个接口。
- 通常用于快速实现接口或抽象类的实例。
- 可以在创建时直接实例化。
2. Object类
2.1 Object类方法
clone(): 创建并返回对象的副本。finalize(): 不推荐使用,已在JDK 9中过时。getClass(): 返回对象的运行时类。hashCode(): 返回对象的哈希码值/地址值。toString(): 返回对象的字符串表示形式。notify(),notifyAll(),wait(),wait(long timeoutMillis),wait(long timeoutMillis, int nanos): 与同步相关的方法。
2.2 重写equals和hashCode
equals(Object obj): 默认使用==进行比较;建议根据内容进行重写。hashCode(): 当重写equals时,应当重写hashCode以保持equals和hashCode的一致性。
3. 枚举
- 枚举是一种特殊的类,定义了一组有限的常量值。
- 枚举通常用于表示一组相关的常量。
- 枚举常量通常使用大写字母表示。
4. 异常处理
4.1 异常体系
Throwable是所有错误和异常的超类。Error表示严重错误,通常无法恢复。Exception表示可能出现的异常,分为可检查(编译时)和不可检查(运行时)异常。
4.2 异常处理结构
- 使用
try-catch块来处理异常。 - 可以使用多个
catch块来捕获不同类型的异常。 finally块包含无论是否发生异常都会执行的代码。
4.3 抛出异常
- 使用
throw可以显式抛出异常。 - 在方法签名中使用
throws声明可能抛出的异常。
4.4 处理和打印异常信息
- 使用
getMessage()、toString()和printStackTrace()等方法获取和打印异常信息。
异常体系 : Throwable : 是Java语言中所有错误和异常的超类 |Error/错误 : 表示合理的应用程序不应该试图捕捉的严重问题. |Exception/异常 : 表示合理的应用程序可能想要捕获的条件。 |RuntimeException/运行时异常 : 代码执行过程中才出现的异常 , 比如 NullPointerException |RuntimeException之外的异常/编译时异常 : 编译时期就会提示,比如 ClassNotFoundException
只有作为此类实例(或其子类之一)的对象才会由Java虚拟机抛出, 或者可以由Java抛出语句抛出。 类似地,只有这个类或它的一个子类可以是catch子句中的参数类型。
注意 : 1.有异常但没有异常处理结构时 : 程序会终止在异常发生的那一行 2.有异常并且有对应异常处理结构时 : 程序在异常产生的位置开始跳转 ----> catch语句 ----> finally语句 ----> 程序正常运行 3.有异常并且有异常处理结构 , 但是没有对产生的异常进行处理时 : 程序在异常产生的位置开始跳转 ----> finally语句 ----> 程序打印异常信息 ----> 程序终止 4.有 处理方式 , 但没有异常产生 : try语句执行完后 --> finally语句 ---> 程序正常运行
throw : 动词 , 用于函数内部抛出一个异常 ; 如果抛出的是一个编译时异常,需要在函数部分进行声明 ; 如果抛出的是一个运行时异常,不需要在函数部分进行声明 ;
throws : 名次 , 用于函数声明部分 , 声明异常