java中容易被忽视的语法知识点大汇总

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 修饰的属性一般要求赋予初值,没有赋初值的应在代码块中或构造器中做初始化操作!之后属性值就不可修改

猜你喜欢

转载自blog.csdn.net/abcnull/article/details/107642114