java中final和 finally的区别 - 面试宝典
Java中final和finally是两个完全不同的关键字。 final是一个修饰符,可以用于类、方法和变量。当用于类时,表示该类不能被继承;当用于方法时,表示该方法不能被重写;当用于变量时,表示该变量只能被赋值一次,即为常量。final关键字提供了不可变性的特性,用于确保特定的类、方法或变量的不可更改性。 finally是一个关键字,用于结构化异常处理中的try-catch-finally块。finally块中的代码无论异常是否发生,都会被执行。通常在finally块中放置一些必须执行的清理代码,例如关闭打开的文件、释放资源等。finally块的作用是确保代码块中的资源被正确释放,即使发生了异常也能保证执行。 因此,final和finally在Java中具有完全不同的作用和用法。final用于修饰类、方法和变量,用于实现不可变性;而finally用于结构化异常处理中的清理代码块,用于确保资源的正确释放。
以下是使用final和finally关键字的示例代码:
javaCopy code// 使用final修饰类
final class FinalClass {
// 使用final修饰方法
final void finalMethod() {
// final修饰的方法不能被子类重写
}
// 使用final修饰变量
final int finalVariable = 10;
// final修饰的变量只能被赋值一次,即为常量
}
public class FinallyExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Error: " + e.getMessage());
} finally {
System.out.println("Finally block executed");
}
}
public static int divide(int num1, int num2) {
try {
return num1 / num2;
} catch (ArithmeticException e) {
throw e;
}
}
}
在上面的示例代码中,FinalClass类被使用final修饰,表示它不能被继承。finalMethod()方法被使用final修饰,表示它不能被重写。finalVariable变量被使用final修饰,表示它只能被赋值一次。 在FinallyExample类中,divide()方法用于进行两个数相除的操作。在main()方法中,调用divide()方法可能会抛出ArithmeticException异常。在try-catch块中捕获该异常并处理,然后无论是否发生异常,finally块中的代码都会被执行。最后,程序输出相应的结果和Finally block executed信息。

- 点赞
- 收藏
- 关注作者
评论(0)