检查变量是否在Java中初始化

时间:2015-12-27 01:17:21

标签: java

在Java中是否有办法检查变量是否初始化为不在类中。我发现javascript但不是Java。听到是我正在寻找的一个例子。

private float[] Average;
private void Check(){
if(/*variable is not initialized*/){ Average = new float[4];}
}

4 个答案:

答案 0 :(得分:12)

您可以使用if (Average == null)检查它是否为null,但是您无法确定它是否显式设置为null或默认为null。 这适用于每种对象类型(数组也是对象),因为对象'默认值为null。但是,8种基本类型(int,byte,float,char,long,short,double和boolean)不能为null。例如。如果您没有为其分配值,则int默认为0。

答案 1 :(得分:10)

java中的数组就像对象一样(它们不是原始类型)。

是的,您可以使用以下命令检查数组是否已初始化:

private void check(){
    if(average == null){
        average = new float[4];
    }
}



更好的解决方案(如果您在实例化时知道数组大小)

但在我看来,您最好在类构造函数中初始化变量,如下所示:

public class MyClass {
    private float[] average;

    public MyClass(int arraySize) {
        this.average = new float[arraySize];
    }
}

这样,每次创建MyClass对象时,您都确定它已初始化。

更好的解决方案(即使您在实例化时不知道数组大小)

如果你不知道阵列的大小,我最好使用List

public class MyClass {
    private List<Float> average;

    public MyClass() {
        this.average = new ArrayList<>();
    }
}

列表会在满员时自动调整大小。

答案 2 :(得分:6)

如果您担心类定义之外的变量,那么您应该检查是否有null

null表示该变量未初始化。如果是基本类型,例如intdouble等,编译器会通知您特定变量未初始化。

在类字段中,甚至在构造函数执行之前,使用默认值初始化。

答案 3 :(得分:2)

您可以将该字段声明为final。这样做,你必须在构造函数中或在变量声明期间初始化它。使用final字段会使您的变量未初始化检查变得多余:

private final float[] average = new float[SIZE_OF_ARRAY];

private final float[] average;

public MyClass(int sizeOfArray) {
    this.average = new float[sizeOfArray];
}