final只是表示引用不能变,不代表被引用的对象不能改变。
//直接初始化
}
Test(){
a = 1;
}
}
例如:
final StringBuffer sb=new StringBuffer("aa");
sb.append("b");
//这是可以的,他并没有改变引用,只是改变引用的对象。
sb=new StringBuffer("cc");
//这是不可以的,他试图改变引用。
final int a=1;
a=2;
//这是不可以的,a原来指向常量区的区中的1,后来想指向常量区的2,出现错误。
若类中成员属性用final来修饰,因为final的instant variable没有默认值,必须在构造函数结束前被赋予一个值。所以有如下两种方法来初始化final变量。
- class Test{
- class Test{