對於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