Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查变量是否在Java中初始化_Java - Fatal编程技术网

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

检查变量是否在Java中初始化,java,Java,Java中是否有方法检查变量是否初始化为不在类中。我找到了for,但没有找到Java。Hear是我正在寻找的一个例子 private float[] Average; private void Check(){ if(/*variable is not initialized*/){ Average = new float[4];} } 您可以使用if(Average==null)检查它是否为null,但无法判断它是显式设置为null还是默认设置为null。 这适用于每种对象类型(数组也是对象

Java中是否有方法检查变量是否初始化为不在类中。我找到了for,但没有找到Java。Hear是我正在寻找的一个例子

private float[] Average;
private void Check(){
if(/*variable is not initialized*/){ Average = new float[4];}
}
您可以使用
if(Average==null)
检查它是否为null,但无法判断它是显式设置为null还是默认设置为null。
这适用于每种对象类型(数组也是对象),因为对象的默认值为null。但是,8种基本类型(int、byte、float、char、long、short、double和boolean)不能为null。例如,如果不为
int
赋值,则默认值为0。

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
对象时它都被初始化。

更好的解决方案(即使在实例化时不知道数组大小) 如果您不知道数组的大小,我最好使用
列表

public class MyClass {
    private List<Float> average;

    public MyClass() {
        this.average = new ArrayList<>();
    }
}
公共类MyClass{
私人名单平均数;
公共MyClass(){
this.average=新的ArrayList();
}
}

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

如果您担心类定义之外的变量,则应检查是否存在
null

null
将指示变量未初始化。对于基本类型,例如
int
double
和类似类型,编译器将通知您特定变量未初始化


在类中,即使在构造函数执行之前,字段也会被初始化为默认值。

您可以将字段声明为
final
。要做到这一点,您必须在构造函数中或在变量声明期间对其进行初始化。使用
final
字段将使变量未初始化检查冗余:

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


通常,当您尝试引用未初始化的变量时,java编译器会发出警告。如果我不知道数组的大小,那么我认为不可能在构造函数中初始化它。。对吗?我添加了一些可能对您有所帮助的示例,一个在初始化时具有固定数组大小,另一个示例具有列表而不是数组。“它们总是有一个默认值”
null
是对象类型的默认值,因此每个变量都被初始化,然后程序通过编译。
private final float[] average;

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