Java 有没有办法检查数组是否使用默认值或赋值?
我是java新手,我想创建一个数组并更改数组中的特定值。我知道如果我像这样初始化数组:Java 有没有办法检查数组是否使用默认值或赋值?,java,arrays,Java,Arrays,我是java新手,我想创建一个数组并更改数组中的特定值。我知道如果我像这样初始化数组: int[] myArray = new int[4]; 数组中的所有值都将设置为0。如果我想检查0值是否是故意设置的,是否存在与默认值不同的内容(如引用),表明默认情况下未设置0值?我建议您使用整数数组,而不是int。然后,您可以通过将项与null进行比较来区分未分配的值,因为这些项是由null而不是零初始化的。立即用一些永远无法有意设置的值填充数组。例如,如果您知道合法值介于0和40之间,则可以执行以下操
int[] myArray = new int[4];
数组中的所有值都将设置为0。如果我想检查0值是否是故意设置的,是否存在与默认值不同的内容(如引用),表明默认情况下未设置0值?我建议您使用
整数数组,而不是int
。然后,您可以通过将项与null
进行比较来区分未分配的值,因为这些项是由null
而不是零初始化的。立即用一些永远无法有意设置的值填充数组。例如,如果您知道合法值介于0和40之间,则可以执行以下操作:
int[] myArray = new int[4];
Arrays.fill(myArray, 42);
然后,您可以通过测试元素是否为42来判断是否已设置该元素。您可以尝试使用循环将默认值设置为0
以外的值
for( int i=0;i<myArray.length;i++){
myArray[i]=1;
}
for(int i=0;i您可以围绕数组创建自己的包装类。这允许您创建另一个内部布尔数组以跟踪修改的值:
public class Array {
private final int[] values;
private final boolean[] modified;
public Array(int length) {
values = new int[length];
modified = new boolean[length];
}
public void set(int index, int value) {
values[index] = value;
modified[index] = true;
}
public int get(int index) {
return values[index];
}
public boolean isDefaultValue(int index) {
return !modified[index];
}
}
只有一种“零”。除了分析代码外,您无法判断是否已显式设置。否。您为什么要这样做?否。我只能想象您为什么需要这样的内容。不。您可以始终使用可为null的Integer
包装类型,但没有任何东西阻止实际代码将数组项指定为null
pro不管怎么说,从语法上讲,这是一种弱酱汁。您可以创建一个等价的布尔[]
,并在设置相应的int值后将其设置为true。请查看Mena的注释above@P.An谢谢。我查过了。但我还是会用Integer
。