I am going to use a slightly different analogy, since a lot of answers are providing you with the correct information.
An array is just a list of sequential boxes containing values. Imagine it is a list of houses, each numbered from 0 (arrays in Java like many other programming languages start at 0 not 1) to n (in your case it is 2).
So if you were someone collecting donations from each house, you would start from the first house, 0, then proceed to the next house 1, then to the next house 2. You would keep track of which house you are visiting now, so that you also know which is the next one, and that is what the integer variable i is doing.
Printing numbers[i] does not make the loop cycle, in the same way that knocking on the first house does not mean you are going to knock at the second house.
The for loop is keeping track of which house numbers you need to visit next. It does it by the 3 statements it has in the same line:
for(int i = 0; i < number.length; i++)
The first statement is saying start from the first house (int i = 0). You could start wherever you like.
The second statement is saying, you want to go up to the last house, irrespective of how many houses there are. (i < number.length). This literally translates to keep looping as long as i is less than the size of the array. You might ask why isn't the condition <=. It is because we start from 0, so the length (size of the array) will be the number of the last house + 1. In your case, length = 2 + 1.
The third statement, is what is making you move to the next house. i++ is shorthand for saying i = i + 1. This statement takes place after every iteration of the loop.
So essentially your for loop first initialises i to 0, checks the condition (the second statement) and if the condition is satisfied does the first iteration, then it finally increments i, to start another iteration if the second condition is still satisfied. This loop is repeated until the second statement of your for expression is not true any more.
Finally all numbers[i] means is, since numbers is an array, the [ ] operator accesses the value at the specified index. So it is like knocking at the house with number i to see who lives there. Feeding the value to System.out.println() prints that value on screen.
iis just a dummy index which is used to represent the position in the array, as the loop is evaluating. If you still don't grasp this, I recommend hitting up a good Java/programming tutorial, and focus on the syntax of loops.numbers[i]construct does not cycle through the array. Theforloop construct does.iis thefor-loop-scoped variable that holds the current index of the array, upper-bound by< numbers.lengthand incremented every cycle by one (i++). Sonumbers[i]is a reference to the array element ofnumbersat indexi. Btw you have a typo in your loop declaration - should benumber**s**.length.numbers[0]is the first element of the array, ifi = 0thennumbers[i]is the same asnumbers[0], that is, the first element of the array. If nowi++is executed,iturns to 1 andnumbers[i]is now the samenumbers[1]the 2nd element in the array