三个相似的单词在java里有啥区别和联系呢?
- 没有啥联系,final 用来修饰类,方法,属性。finally 搭配try ,表示finally里的程序一定执行。finalize则是用来垃圾回收时进行资源的回收,在对象回收前被执行,因此finalize不再推荐使用,对垃圾回收的性能影响很大。
- final 修饰有啥用处呢?
- final 修饰类表示类不能被继承,可以保证类的不可变,以保证类行为不会发生改变以导致安全问题。比如在java里很多基础的类都是final的。String、Integer这些基础包装类都是final的。
- final 修饰属性,表示属性不可改变。但是该属性的行为是可变的,比如修饰一个list,那么list.add()方法执行也不会报错。可见修饰不可变对象引用,是指该引用不能再指向其他对象的引用。
- final 修饰方法表示方法不可被重写,保证方法的不可变。
- 实现真正的不可变类:
- 类是final的,类的成员变量是private final 的,切没有set方法。
- 对象的创建通过深度拷贝实现。
- finally 常用来做啥?
- finally 通常用来保证资源的回收,关闭。比如文件的关闭,流的关闭,数据库连接的回收。
- 有一种情况finally里的程序不会执行,这是测试就不会打印出来。
public static void main(String[] args) { try { System.exit(0); }finally { System.out.println("ceshi "); } }
- finalize 现在通常提倡使用Cleaner