final
final就是不可变的意思,可以修饰变量、⽅法和类。修饰变量时,这个变量必须初始
化,所以也称为常量。
被final修饰的类不能被继承
如果一个变量被final修饰,就需要初始化。可以在声明的时候赋值,或者在每一个构造函数中赋值。
finally
finally是异常处理的⼀部分,只能⽤在try/catch中,并且附带⼀个语句块表⽰这段语
句⼀定会被执⾏,⽆论是否抛出异常。
public class TestClass {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("捕获到了除以0的异常");
} finally {
System.out.println("这段代码一定会被执行");
}
}
}
执行效果↓
finalize(已经弃用了)
在Java中,finalize方法是一个已被弃用的方法,因为它存在一些问题和不确定性。现在,Java推荐使用try-with-resources语句来确保资源的正确关闭,而不是依赖于finalize方法。
try-with-resources是Java 7引入的一种自动资源管理机制,它可以确保在代码块执行完毕后自动关闭资源。要使用try-with-resources,需要确保资源类实现了AutoCloseable或Closeable接口,并在try语句中声明资源对象。当try代码块执行完毕后,资源对象会自动调用close方法进行关闭。
下面是一个使用try-with-resources的示例代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上述代码中,BufferedReader是一个资源类,它实现了AutoCloseable接口。通过将BufferedReader对象放在try语句的圆括号内,可以确保在代码块执行完毕后自动调用close方法关闭资源。这样就避免了手动关闭资源的繁琐和可能的错误。
总结来说,现在推荐使用try-with-resources来代替finalize方法来确保资源的正确关闭和管理。这样可以提高代码的可靠性和可维护性。