对于java类,在构造函数中使用“new”和在类之外使用“new”有什么区别?举例如下,对于java类,在构造函数中使用“new”和在类之外使用“new”有什么区别?
abstract class PowerStat{
final int numOfComponent = UserProperty.numOfComponent;
final int windowSize = 8;
CircularFifoQueue<ArrayList<Double>> movingEnergy;
CircularFifoQueue<Double> movingStartTimes;
CircularFifoQueue<Double> movingEndTimes;
private double [] maxPower = new double[numOfComponent];
private double [] minPower = new double[numOfComponent];
public ArrayList<Double> intervalEnergy = new ArrayList<Double>(numOfComponent);
private ArrayList<UsageNode> usageList = new ArrayList<UsageNode>();
public PowerStat(){
setUsageList(new ArrayList<UsageNode>());
for (int i = 0; i < numOfComponent; i++) {
intervalEnergy.add(0.0);
}
movingEnergy = new CircularFifoQueue<ArrayList<Double>>(windowSize);
movingStartTimes = new CircularFifoQueue<Double>(windowSize);
movingEndTimes = new CircularFifoQueue<Double>(windowSize);
}
}
maxPower是在构造函数外的类中创建的。但是,movingEnergy在构造函数中实例化。这两种方法有什么区别。
当做字段(构造函数外)执行?当Powerstat类未实例化时,是否创建了maxPower的空间?每个实例都有其自己的maxPower空间? –
变量是实例变量。它们只在调用构造函数时才创建;那么它们在执行构造函数之前被填充。您可以将它们视为每个构造函数的不可见部分。 –
这个答案在技术上并不正确。如果构造函数调用了'super()',那么字段初始值设定项会在调用'super()'之后执行*,但在构造函数体的其余部分之前执行。 – Andreas