文章目录
final 修饰的属性不可被修改?
这句话是不准确的,我们看一下下面几个例子,写法是错误的,final 的变量一样要求赋初值
// 写法错误!
public class TestDemo {
public final int num;
}
// 写法错误!
public class TestDemo {
public final int num = 1;
{
num = 2;
}
}
再看正确的几个例子
// 写法正确
public class TestDemo {
public final int num;
{
num = 1;
}
}
// 写法正确
public class TestDemo {
public final int num;
public TestDemo() {
num = 1;
}
}
// 写法正确
public class TestDemo {
public static final int num;
static {
num = 1;
}
}
结论
final 修饰的属性一般要求赋予初值,没有赋初值的应在代码块中或构造器中做初始化操作!之后属性值就不可修改