Elementos de modificación de Java en un foreach

Estoy aprendiendo Java por mi cuenta; y, por lo tanto, el siguiente código no tiene otra función que la de aprendizaje / prueba.

Esencialmente, estoy intentando modificar los elementos de una matriz Integer (es decir, reducirlos a la mitad) mientras estoy en un bucle foreach.

Debo tener en cuenta que no estoy reordenando, agregando o eliminando elementos; Simplemente cambiando sus valores.

Aquí está mi código:

Logger.describe("Now copying half of that array in to a new array, and halving each element");
Integer[] copyArray = new Integer[DEFAULT_SAMPLE_SIZE / 2];     
System.arraycopy(intArray, 0, copyArray, 0, DEFAULT_SAMPLE_SIZE / 2);
for (Integer x : copyArray) x /= 2;
Logger.output(Arrays.deepToString(copyArray));

Sin embargo, la matriz original (intArray) es la siguiente:

[47, 31, 71, 76, 78, 94, 66, 47, 73, 21]

Y la salida de copyArray es:

[47, 31, 71, 76, 78]

Entonces, aunque la matriz se ha reducido a la mitad en tamaño, los elementos (enteros) tampoco se han reducido a la mitad en valor. Entonces, ¿qué estoy haciendo mal?

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta