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)