1,关于final
(1)被final修饰的类不可以被继承
(2)被final修饰的方法不可以被重写
(3)被final修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.
(4)被final修饰的方法,JVM会尝试将其内联,以提高运行效率
(5)被final修饰的常量,在编译阶段会存入常量池中.
2,使用final变量的好处
final变量不可变,最大好处就是线程安全
3,能否创建一个包含可变属性的不可变对象
可以,不可变的是引用,可变的是内容.如下面代码,final只是限制的acSysUser的引用不能变,但是对他内存中实际存的值是没有限制的
final AcSysUser acSysUser = new AcSysUser();
acSysUser.setUserId("222");
4.关于final,finalize()和finally
(1)三者没有任何相关性,
(2)final是一个修饰符,用于修饰变量,方法和类.如果 final 修饰变量,意味着该变量的值在初始化后不能被改变.
(3)finalize()方法是在对象被回收之前调用的方法,给对象自己最后一个复活的机会.但是该方法由Finalizer线程调用,但调用时机无法保证.
(4)finally是一个关键字,与 try和catch一起用于异常的处理,finally{}一定会被执行,在此处我们通常用于资源关闭操作.