final的用法:

修饰变量:final关键字修饰的基本数据类型变量称为常量,不可更改。

final修饰的引用类型是不能改变其引用地址的,但可以改变地址内部属性。

修饰方法:final 关键字修饰的方法不可被覆盖。

把方法锁定,以防止任何继承类修改它的含义,确保在继承中使方法的行为保持不变,并且不会被覆盖。

使用final关键字的好处:

  1. final方法比非final快一些。

  2. final关键字提高了性能。JVM和Java应用都会缓存final变量。

  3. final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

  4. 使用final关键字,JVM会对方法、变量及类进行优化。

异常

处理运行时错误的机制,例如 ClassNotFoundException、IOException、SQLException、RemoteException 等。

发生异常的主要原因

  • 用户输入无效

  • 设备故障

  • 网络连接丢失

  • 物理限制(磁盘内存不足)

  • 代码错误

  • 打开不可用的文件

异常层次结构

所有异常和错误类型都是Throwable类的子类,后者是层次结构的基类。

一个分支Exception。此类用于用户程序应捕获的异常情况。NullPointerException 是此类异常的一个示例。Java 运行时系统 ( JVM ) 使用。 另一个分支Error来指示与运行时环境本身 (JRE) 相关的错误。StackOverflowError 就是此类错误的一个示例。

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块用于放置重要代码,例如清理代码,关闭文件或关闭连接