final:
final修饰的变量不可修改,一遍的成员变量有默认的初始值,而final修饰的成员变量没有默认值,因此final修饰的成员变量需要赋初值
final修饰的变量不可修改,对基本类型来说就是值不能变了,对引用类型来说是引用不用重新指向别的对象,而对象的属性值是可以变得(因此引用本身的值并未变)
final修饰的方法不能被覆盖(override)
final修饰的类不能被继承
finally
常见的try catch finally 就是无论如何最后都要被执行的语句块
try{
return 1;
}
catch{
}
finally{
return 2;
}
这样先执行return1;将1放入到函数栈中,然后执行return2将2放入栈中,所以最终返回的是2,所以不管前面有return或者什么语句,finally都是最后要不被执行的。
finallize
垃圾收集器回收某个对象之前 可能会被JVM调用这个方法
该方法是Object方法,所以可以自行重写这个方法(override)
实例:
/**
* 测试垃圾回收和finalize方法
* @author liuyang
*
*/
public class Test20110316d {
public static void main(String[] args) {
TestFinalize tf = new TestFinalize();
tf=null; //让上面那个对象没有引用指向它
System.gc();//手动调用JVM的垃圾回收
//Runtime.getRuntime().gc(); //另一种方式
}
}
class TestFinalize{
//垃圾收集器回收这个对象之前 执行这个方法
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
System.out.println("in finalize method of class "+this.getClass().getName());
}
}