使数组中的元素为空。

10
这两个东西是一样的吗?
for(int i=0; i<array.length; i++){
array[i] = null;
}

and

array = null;
5个回答

19

以下是一个小片段,用于展示它们之间的区别:

// declare a array variable that can hold a reference.
String [] array;

// make it null, to indicate it does not refer anything.
array = null;

// at this point there is just a array var initialized to null but no actual array.

// now allocate an array.
array = new String[3];

// now make the individual array elements null..although they already are null.
for(int i=0;i<array.length;i++)
{
    array[i] = null;
}
// at this point we have a array variable, holding reference to an array, 
// whose individual elements are null.

在第一条语句“array = null;”之后,你的语句“...只是一个指向字符串的引用...”并不完全正确。这实际上是一个可以保存引用的变量,但是没有引用。 - Kevin Brock

9

不,第一个会使数组的每个元素为null,但是数组的长度仍然是array.length。而第二个会将数组变量设置为null。


6
不,它们不同。
实际上,为了使第一个代码片段正确运行,数组变量应该像这样声明和初始化(例如):
Object[] array = new Object[5];

这将创建一个包含5个元素的数组,每个元素都具有null值。
一旦创建了这个数组,在第一个例子中,你正在将null值分配给每个array[i]元素。 array不会是null。因此,你应该有类似于以下内容的东西。
array ->
  • array[0] -> null
  • array[1] -> null
  • array[2] -> null
  • array[3] -> null
  • array[4] -> null
通过执行array = null,你正在表示该数组不再引用那个元素数组。现在你应该有
array -> null

1

两种方法都不可行!如果您有一个整数数组,并尝试将元素设置为null,则无法完成操作。

arr[i]=null;

因为整数不能转换为null。


0

完全不是这样。

在第一种情况下,您将数组中的所有引用都设置为 null。

在第二种情况下,您将数组本身的引用设置为 null。


只有一个引用是针对数组变量的。 - mgokhanbakal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接