java beginner:初始化类变量

Ism*_*ush 5 java constructor initialization declaration

我刚读过SUN的java代码约定 ; 非常好的文件btw.我读过这个

6.3初始化:尝试初始化声明它们的局部变量.没有初始化声明的变量的唯一原因是初始值取决于首先发生的某些计算.

而且我想知道是否Class variables有相同的建议,例如我有:

public class NNmatrix {

    protected ArrayList<ArrayList<Double>> matrix;     // line 1
    public NNmatrix() {
        matrix = new ArrayList<ArrayList<Double>>();     // line 2
    }
    /**
     * 
     * @param otherMtrx
     */
    public NNmatrix(final ArrayList<ArrayList<Double>> otherMtrx) {
        final int rows = otherMtrx.size();
        matrix = new ArrayList<ArrayList<Double>>(rows);  // line3
        for (int i = 0; i < rows; i++) {
            this.matrix.add(new ArrayList<Double>(otherMtrx.get(i)));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑代码#如果我要初始化variable声明的位置(在课堂上),我会删除 "第2行"并留下 "第3行"因为你知道性能问题#reserving(rows)在内存中.

问题是:

  1. 这样做是好的做法还是初始化问题只适用于方法内的局部变量等?
  2. 如果没问题的话,我想知道如果我编写了编辑代码#初始化@第3行或初始化@第1行,它会先出现?

Nat*_*hes 4

这些是实例变量,而不是类变量。实例变量属于特定对象,类变量则不属于(抱歉挑剔)。

我认为在声明变量的地方初始化变量更简单且更易于阅读。

jvm从文件顶部开始初始化实例变量和实例初始化块,然后向下工作,只有在初始化所有变量并运行初始化块之后,它才会执行构造函数。