检查变量是否在Java中初始化
Java中是否有方法检查变量是否初始化为不在类中。我找到了for,但没有找到Java。Hear是我正在寻找的一个例子检查变量是否在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。 这适用于每种对象类型(数组也是对象
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];
}