java for loops explained