Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enhanced for loop not working for assigning values to an array (Java) [duplicate]

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?

like image 396
ActionField Avatar asked Mar 20 '16 12:03

ActionField


Video Answer


1 Answers

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.

like image 186
Eran Avatar answered Oct 17 '22 01:10

Eran



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!