int[] arreglo;
Con eso te creas una referencia a un arreglo, pero solo una referencia, es decir, puede estar apuntando a nada( una referencia nula) o puede estar apuntando a un arreglo. En el caso anterior es simplemente una referencia nula.
con new puedes crear un objeto y hacer que una referencia apunte al objeto. Puedes crear tantos objetos quieras y hacer que la referencia apunte a ellos:
int[] arreglo;
arreglo = new int[] {3,4,1};
arreglo = new int[] {3,4,1,4,2,3};
arreglo = new int[] {3,4,1,4,2,3,4,2,4,2};
la referencia "arreglo" se queda con el último objeto creado, pero ¿Qué pasa con los objetos anteriores? Pues java tiene algo que se llama recolector de basura y te hace el favor de eliminar los objetos que ya no estas utilizando cuando le parezca conveniente, ¿y siempre lo hace? Pues por algo java consume mucha Memoria RAM, pero no tienes que estar preocupándote de eliminar los objetos.
Esto solo es válido para los objetos, no es lo mismo con las variables primitivas int,char,float etc..
Ahora no sé si lo que escribí fue en vano, al menos creo que entenderás que un arreglo es una especie de objeto por si ya sabías el resto.
Edito: El código que no sabías es sólo una forma diferente de hacer esto;
// declares an array of integers
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
// initialize first element
anArray[0] = 100;
// initialize second element
anArray[1] = 200;
// and so forth
anArray[2] = 300;
anArray[3] = 400;
anArray[4] = 500;
anArray[5] = 600;
anArray[6] = 700;
anArray[7] = 800;
anArray[8] = 900;
anArray[9] = 1000;
Suerte.