1.final
final修饰符 所标记的成分具有终态的特征,表示最终的意思。
final修饰类,类不能被继承。该类将不具有子类。
final修饰方法,方法不能被重写,在某些特殊情况下jvm会将该类方法直接内联以便于减少函数调用开销。
final修饰变量,变量的引用指向不可更改。大约等同于变量不可被更改。(如果引用的是集合,只能保证集合引用指向不被更改、内容无法保证)
2. finally
finally 是指用于try{}中必须被执行的部分。
常规用法
try{ xxx }catch(Exception e){ xxx }finally{ xxx }
finally和方法的return
如果return在try块中,无论何时都会执行finally中的代码。
如果return 在finally中则finally中的代码优先于try块中执行
finalize
finalize 是一个Object对象的方法,当一个对象被回收时会调用该方法。
常规用法
public class Test {
@Override
protected void finalize() throws Throwable {
System.out.println("我被回收了");
super.finalize();
}
}
public class Demo {
public static void main(String[] args) {
Test test = new Test();
test = null;
//这里的gc调用不是每次都会成功。
System.gc();
//简易的增加一个延迟
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
结果
我被回收了