metodos - Declarar arrays sin usar la palabra clave ''nuevo'' en Java
imprimir arraylist java (5)
Estoy de acuerdo con las otras respuestas, con diferencia, la mayoría de las veces, la matriz se asignará al montón (sin importar cuál de las dos declaraciones use). Sin embargo, de acuerdo con la respuesta principal en ¿Puede Java asignar una lista en la pila? , “En casos especiales, la máquina virtual java puede realizar análisis de escape y decidir asignar objetos ... en una pila”. Creo que esto es cierto. Entonces la respuesta a tu pregunta es: Depende. Generalmente en el montón.
¿Hay alguna diferencia entre las siguientes dos declaraciones?
int arr[] = new int [5];
y
int arr1[] = {1,2,3,4,5};
¿ arr1
declara arr1
en la pila o en el montón?
Existe la diferencia obvia de que uno tiene todos los ceros y el otro contiene [1..5].
Pero esa es la única diferencia. Ambos son arreglos int de 5 elementos, ambos se asignan de la misma manera. Es mera conveniencia sintáctica declarar con las llaves y no hay new
.
Tenga en cuenta que este formulario solo se puede utilizar cuando se declara la matriz:
int[] blah = {}
Pero no
int[] blah;
blah = {};
o
return {};
Los objetos (las matrices son objetos) se asignan en el montón.
La primera línea coloca un nuevo objeto en el montón, un objeto de matriz que contiene cuatro elementos, y cada elemento contiene un int con el valor predeterminado de 0.
El segundo hace lo mismo, pero se inicializa con valores no predeterminados. Profundizando, esta sola línea hace cuatro cosas:
- Declara una variable de referencia de matriz int llamada arr1
- Crea una matriz int con una longitud de cinco (cinco elementos).
- Rellena los elementos de la matriz con los valores 1,2,3,4,5.
- Asigna el nuevo objeto de matriz a la variable de referencia arr1
Si utiliza una matriz de objetos en lugar de primitivos:
MyObject[] myArray = new MyObject[3];
entonces tiene un objeto de matriz en el montón, con tres referencias nulas de tipo MyObject, pero no tiene ningún objeto MyObject. El siguiente paso es crear algunos objetos MyObject y asignarlos a posiciones de índice en la matriz a la que hace referencia myArray.
myArray[0]=new MyObject();
myArray[1]=new MyObject();
myArray[2]=new MyObject();
En conclusión: las matrices siempre deben tener un tamaño en el momento en que se construyen. La JVM necesita el tamaño para asignar el espacio apropiado en el montón para el nuevo objeto de matriz.
Objects
residen en el heap
. Arrays
son object type
en el lenguaje de programación Java. Documentación oficial here
new int [5]
se puede usar tanto para la assignment como para la assignment , pero{1, 2}
solo se puede usar como declaración con la inicialización . (Tenga en cuenta quenew int[] {1, 2}
también se puede usar como asignación e inicialización )new int [5]
establece todas las entradas en cero, pero{1, 2}
ynew int[] {1, 2}
establece1
y2
en las entradas respectivas.Ambos están en el montón , puede guardar su referencia de objeto.
int arr[] = new int [5]; // arr: object reference to the array
o
int arr[] = {1, 2, 3, 4, 5}; // arr: object reference to the array
Materiales útiles: