I don't understand why I cannot assign values to the elements of an array using the enhanced for loop.
For example, using for loop like that
int[] array = new int[5];
for(int i = 0; i < 5; i++)
array[i] = 10;
produces what I want.
But why does that not work with "for each":
for(int element : array)
element = 10;
Is there any specific reason why that is the case or am I doing something wrong?
解决方案
In the enhanced for loop element is a local variable containing a reference (or value in case of primitives) to the current element of the array or Iterable you are iterating over.
Assigning to it doesn't affect the array / Iterable.
It's equivalent to :
int[] array = new int[5];
for(int i = 0; i < 5; i++) {
int element = array[i];
element = 10;
}
Which also won't modify the array.
If you need to modify the array, use should use a regular for loop.