这两种初始化Java字段的方法有什么区别?
不多!主要区别在于,如果在声明点分配它,它将适用于所有构造函数.也就是说,你无法忘记将初始化添加到任何未来的构造函数中.
看一下官方的Initializing Fields路径.
值得注意的是,如果在声明处初始化字段,则会在构造函数开始执行之前发生.
根据经验,我通常会在声明中初始化"死的简单"字段(当毫无疑问应该是初始值时).这"清理"例如
class SomeClass {
List<Integer> currentNumbers = new ArrayList<Integer>();
int counter = 0;
// ...
}
Run Code Online (Sandbox Code Playgroud)
虽然我似乎有可能在不同的构造函数中想要不同的行为,但我将它留给构造函数.