Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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_Arrays - Fatal编程技术网

Java 有没有办法检查数组是否使用默认值或赋值?

Java 有没有办法检查数组是否使用默认值或赋值?,java,arrays,Java,Arrays,我是java新手,我想创建一个数组并更改数组中的特定值。我知道如果我像这样初始化数组: int[] myArray = new int[4]; 数组中的所有值都将设置为0。如果我想检查0值是否是故意设置的,是否存在与默认值不同的内容(如引用),表明默认情况下未设置0值?我建议您使用整数数组,而不是int。然后,您可以通过将项与null进行比较来区分未分配的值,因为这些项是由null而不是零初始化的。立即用一些永远无法有意设置的值填充数组。例如,如果您知道合法值介于0和40之间,则可以执行以下操

我是java新手,我想创建一个数组并更改数组中的特定值。我知道如果我像这样初始化数组:

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