Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/05/2015, 21:22
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
Respuesta: ¿cuenta el add(null) como elemento contable?

En muchas ocasiones necesitas inicializar tus variables para luego trabajar con ellas, por ejemplo cuando la primera acción sobre una variable es una comparación (p.ej en condición en bucle). En ese caso necesitas que tu variable esté inicializada. Sin embargo, no quieres que tenga ningún valor inicial, pues si es un string no quieres que tenga ninguna letra, ni espacio, ni carácter... quieres que esté vacio. Bueno, pues en ese caso se inicializa con el valor null.

De esta manera, cuando tu asignas un valor a esa variable, dicho valor sobre-escribe el valor anterior, y da igual que el valor anterior fuese un null o un valor del tipo que fuese tu variable.

En el caso de listas, arrays, y distintas variables capaces de tener varios valores simultáneamente, pueden ser inicializados a null. En este caso el primer valor que manualmente se añade (incluido un null) será el primer valor que coge, y ocupará una posición.

Sin embargo, cuando es inicializada a null, el primer valor añadido (incluso un null) se añade como primer elemento.

En el ejemplo que tú has puesto has declarado un ArrayList... pero no lo has inicializado. Y sin estar inicializado has añadido un null a la primera posición. Por lo tanto va a ocupar 1 posición.

Cuando un null no ocupa ningún espacio es cuando al declarar la variable es inicializada a null... y después añades otro valor (que también puede ser un null)

ArrayList<String> a=null;
a.add(null)
System.out.println("\n tamano test 1"+ a.size());

En este caso el valor con el que se inicializa (null) es sustituido por el primer valor que le añades. Y a.size()=1 en vez de 2.

Con lo cual llegas a la conclusión de que es distinto inicializar una lista, array, o cualquier variable de almacenamiento de varios valores simultáneos a null... que no inicialziarla y añadir un null.

Por lo cual llegamos también a la conclusión de que el proceso:
Int valor;
valor=0;
Es distinto a:
int valor=0;

Y la diferencia es que en un caso la variable ha sido inicializada y en el otro caso no. No necesitas inicializar una variable para asignarla valores. Pero si que necesitas inicializarla para otro tipo de acciones, como por ejemplo comparar alguna de sus propiedades, o utilizarla en algunos métodos (como por ejemplo pasar a string una variable int sin inicializar... no podrías) o incluso, para comparar esa variable con el valor null necesitas haberla inicializado... con un valor null o con cualquier otro valor.

Última edición por Kritik; 19/05/2015 a las 21:42