final的用法:
修饰变量:final关键字修饰的基本数据类型变量称为常量,不可更改。
final修饰的引用类型是不能改变其引用地址的,但可以改变地址内部属性。
修饰方法:final 关键字修饰的方法不可被覆盖。
把方法锁定,以防止任何继承类修改它的含义,确保在继承中使方法的行为保持不变,并且不会被覆盖。
使用final关键字的好处:
-
final方法比非final快一些。
-
final关键字提高了性能。JVM和Java应用都会缓存final变量。
-
final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
-
使用final关键字,JVM会对方法、变量及类进行优化。
异常
处理运行时错误的机制,例如 ClassNotFoundException、IOException、SQLException、RemoteException 等。
发生异常的主要原因
-
用户输入无效
-
设备故障
-
网络连接丢失
-
物理限制(磁盘内存不足)
-
代码错误
-
打开不可用的文件
异常层次结构
所有异常和错误类型都是Throwable类的子类,后者是层次结构的基类。
一个分支Exception。此类用于用户程序应捕获的异常情况。NullPointerException 是此类异常的一个示例。Java 运行时系统 (
try {
// block of code to monitor for errors
// the code you think can raise an exception
} catch (ExceptionType1 exOb) {
// exception handler for ExceptionType1
} catch (ExceptionType2 exOb) {
// exception handler for ExceptionType2
}
// optional
finally { // block of code to be executed after try block ends
}
在一个方法中如果有多个语句可能引发异常,因此将所有这些语句放在它们自己的try块中,并在它们自己的catch块中为它们中的每一个提供一个单独的异常处理程序。
如果try块内发生异常,则该异常由与其关联的异常处理程序处理。要关联异常处理程序,我们必须在其后放置一个catch块。可以有多个异常处理程序。每个catch块都是一个异常处理程序,用于处理由其参数指示的类型的异常。参数 ExceptionType 声明它可以处理的异常类型,并且必须是从Throwable类继承的类的名称。
最多只有一个final 块。
finally 块是可选的。无论 try 块中是否发生异常,它都会被执行。如果发生异常,那么它将在try 和 catch 块之后执行。 如果没有发生异常,那么它将在try块之后执行。java中的finally块用于放置重要代码,例如清理代码,关闭文件或关闭连接。