gpt4 book ai didi

Java 初学者 : initializing class variables

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:32 25 4
gpt4 key购买 nike

我刚刚阅读了SUN java 代码约定;非常好的文件顺便说一句。我读过这个

6.3 Initialization: Try to initialize local variables where they’re declared. The only reason not to initialize a variable where it’s declared is if the initial value depends on some computation occurring first.

我想知道 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)));
}
}
}

编辑代码# 如果我要在声明它的地方(在类中)初始化变量,我会删除“第 2 行”并离开 “第 3 行”因为性能问题 # 如您所知在内存中保留(行)。

问题是:

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

最佳答案

这些是实例 变量,而不是类变量。实例变量属于特定对象,类变量不属于(抱歉吹毛求疵)。

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

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

关于Java 初学者 : initializing class variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4380059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com