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)在内存中.
问题是:
这些是实例变量,而不是类变量。实例变量属于特定对象,类变量则不属于(抱歉挑剔)。
我认为在声明变量的地方初始化变量更简单且更易于阅读。
jvm从文件顶部开始初始化实例变量和实例初始化块,然后向下工作,只有在初始化所有变量并运行初始化块之后,它才会执行构造函数。