java类成员初始化

Dav*_*vid 8 java constructor initialization

我有点惭愧地问,作为Java程序员已经多年了,但是这里说:
在构造期间分配对象和在声明相关字段时直接这样做是否有区别?也就是说,以下两者之间是否存在差异:

public class MyClass{
    MyObj obj=new MyObj();
}
Run Code Online (Sandbox Code Playgroud)

public class MyClass{
    MyObj obj;
    public MyClass() {
        obj=new MyObj();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我认为这个特定的init不依赖于外部参数.

Jig*_*shi 3

实例变量初始化在构造函数调用之前完成

这样做并不好。
您可以限制用户调用 const。如果你想在初始化之前执行某些操作。

最佳实践:

  1. 不要使用声明中的默认值(null、false、0、0.0...)进行初始化。
  2. 如果没有更改字段值的构造函数参数,最好在声明中进行初始化。
  3. 如果该字段的值由于构造函数参数而发生更改,请将>初始化放入构造函数中。
  4. 在练习中保持一致。(最重要的规则)

这里