2010-02-03 10 views

Respuesta

8

No, el primero hace que cada elemento de la nula matriz, la longitud de la matriz todavía será Array.length, la segunda se establece la variable de matriz en NULL.

0

No, en absoluto.

En el primer caso está configurando todas las referencias en su matriz como nulas.

En el segundo caso está configurando la misma referencia a la matriz en nulo.

17

Un pequeño fragmento para mostrar la diferencia:

// 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. 
+0

Después de la primera instrucción 'array = null;' su instrucción "... simplemente una referencia a una cadena ..." no es del todo correcta. Esto realmente es una variable que puede contener una referencia pero no hay referencia. –

+0

@Kevin: Gracias :) – codaddict

+0

+1: Nice answer –

5

No, no es lo mismo.

Como cuestión de hecho, para la primera fragmento de código para funcionar correctamente, la variable de matriz debe declararse y se inicializa como esta (por ejemplo)

Object[] array = new Object[5]; 

Esto crea una matriz de 5 elementos con cada elemento que tiene un valor de null.

Una vez que tenga esto, en el primer ejemplo, lo que está haciendo es asignar un valor nulo a cada uno de los elementos array[i]. array no será null. Entonces deberías tener algo como esto.

array ->

  • array [0] -> nula
  • array [1] -> nula
  • array [2] -> nula
  • array [3] -> nula
  • array [4] -> nula

haciendo array = null usted está diciendo que la matriz de referencia ya no se s esa matriz de elementos. Ahora usted debería tener

gama -> nula

-1

Ninguno de los dos va a funcionar! Si tiene una matriz de enteros e intenta hacer que un elemento sea nulo, no puede hacer arr [i] = null; porque el entero no se puede convertir a nulo.

Cuestiones relacionadas