final关键字
- finalize()清除对象的内存空间
- 不可对常量赋值(初始化后)
- 记忆常量的初始化位置,即在对象构造之前将final变量初始化就OK
- static final PI(实例)
方法内不能初始化
- 创建D的对象,常量就存在于对象在堆空间的实体里,
不能更改(不能重新赋值的原因) - 所有的构造器都得赋值,不然报错(调用未赋值的构造器则常量未初始化)
final关键字排错
代码1
public class Something {
public int addOne(final int x) {
return ++x; //错误,因为更改了常量X的值
} }
(final int x)为初始化语句,++x赋值(mistake)
代码2
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o); }
public void addOne(final Other o) {
o.i++; //未引用变量O的值
//o = null;若改为此语句,则错误,初始化后又赋值了
} }
class Other {
public int i; }
正确