在Java中是否有办法检查变量是否初始化为不在类中。我发现javascript但不是Java。听到是我正在寻找的一个例子。
private float[] Average;
private void Check(){
if(/*variable is not initialized*/){ Average = new float[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
表示该变量未初始化。如果是基本类型,例如int
,double
等,编译器会通知您特定变量未初始化。
在类字段中,甚至在构造函数执行之前,使用默认值初始化。
答案 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];
}