final关键字通常用来定义不想让它‘发生改变‘的部分。可以用final修饰的有数据、方法和类。
import java.util.Random;
public class Final {
private static Random rand = new Random(30);
private static final int var = rand.nextInt(15);
//运行时被初始化值
private final int var2 = rand.nextInt(18);
private final int var3;//空白final 必须在构造器内赋值
public Final() {
// TODO Auto-generated constructor stub
var3 = 9;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Final f = new Final();
Final f2 =new Final();
System.out.println(f);
System.out.println(f2);
}
public String toString() {
return "var的值:" +var + ";var2的值:--" + var2;
}
}
输出结果
var的值:11;var2的值:--6
var的值:11;var2的值:--11
使用final方法的原因主要是把方法锁定,以防任何继承类修改它的含义,确保继承中使方法行为保持不变,并不会被覆盖
。类中的private方法都隐式的指定为final的。
final类不可被继承,因为final类禁止继承,所以final类中所有的方法都隐式指定为final的,无法覆盖。
Finally通常和try catch搭配使用,保证不管有没有发生异常,资源都能够被释放(释放连接、关闭IO流)。
Finalize是object类中的一个方法,子类可以重写finalize()方法实现对资源的回收。垃圾回收只负责回收内存,并不负责资源的回收,资源回收要由程序员完成,Java虚拟机在垃圾回收之前会先调用垃圾对象的finalize方法用于使对象释放资源(如关闭连接、关闭文件),之后才进行垃圾回收,这个方法一般不会显示的调用,在垃圾回收时垃圾回收器会主动调用。
参考链接:
https://blog.csdn.net/beixiaozhang/article/details/52955862