final、finally、finalize
1、final——是修饰符
final类似于C++中得const,可以用来修改不可改变的对象,如基本类型的变量和对象变量。
finalinta = 0;
void fun(finalBaseb)
{
}
final方法:1、该方法可继承但不能复写;2、编译器可将其转化为inline方法
publicclass test
{
finalvoid fun()
{
}
}
final类:不可继承。由于类不可继承,自然方法也无法继承,此时方法便是final类型。
finalpublicclass test
{
void fun()
{
}
}
2、finally
用于异常处理。无论是否有异常,finally结构的代码总会执行,所以可用来维护对象内部状态并可以清理非内存资源。
3、finalize——方法名
java允许使用finalize()方法在垃圾收集器将对象从内存中清楚出去之前做必要的清理工作,也就是确定该对象没有被引用时才有可能对此对象调用的,且做多调用一次。它在Object类中定义的,所有的类都继承了该方法,当然子类也可以复写该方法来执行清理工作。
package test;
publicclass test
{
publicstaticvoid main(String[]args)
{
A a1 =new A();
System.out.println("a:"+a1.a);
a1.finalize();
System.gc();
}
}
class A
{
inta = 0;
A()
{
a = 1;
}
publicvoid finalize()
{
System.out.println("finalize");
if (1 ==a)
System.out.println("a=1");
elseif (0 ==a)
System.out.println("a=1");
}
}
结果:
a:1
finalize
a=1
注:系统未必会一定调用finalize()方法