可以說我有一類「ComputerInsane」與私人領域「cpuCount」和一個默認的構造函數,像這樣:當我應該初始化構造函數內部的類字段和外部構造函數?
public class ComputerInsane {
private int cpuCount = 23;
public ComputerInsane() {
//default constructor
}
}
現在我可以初始化cpuCount構造外的23值像上面,因此,當我在類的外部創建類computerInsane的實例時,私有字段cpuCount將自動初始化爲23.但是,我也可以在聲明變量之後在構造函數中進行初始化,如下所示:
public class ComputerInsane {
private int cpuCount;
public ComputerInsane() {
//default constructor
cpuCount = 23;
}
}
這樣它也會在我創建時自動調用當調用默認構造函數時,類computerInsane的一個實例。我的問題是這兩種字段初始化之間的實際區別是什麼,我應該做第一個還是第二個變體?
更重要的是,可以說這些字段是需要用「new」或數組初始化的其他類的對象,因爲它們還需要用「new」初始化。在同樣的意義上,我然後去:
public class ComputerInsane {
private int cpuCount = 23;
private int[] someArray = new int[10];
Someclass object1 = new Someclass();
public ComputerInsane() {
//default constructor
}
}
還是我去:
public class ComputerInsane {
private int cpuCount;
private int[] someArray;
Someclass object1;
public ComputerInsane(){
//default constructor
cpuCount = 23;
someArray = new int[10];
object1 = new Someclass();
}
}
更重要的是preferrable,什麼我應該做的?
如果它是一個文字或一個常量,它並不重要。如果它取決於一個參數,那麼它應該在構造函數中。 (在你的例子中有幾個語法錯誤,以及你可能想要堅持Java命名約定) – SomeJavaGuy