향상된 for문
- 향상된 for문(Enhanced for Loop), for-each문
- for (변수 : 배열 또는 컬렉션) { //배열 또는 컬렉션의 요소를 순회하면서 수행할 작업}
- 배열의 인덱스를 사용하지 않고, 종료 조건을 주지 않아도 된다. 단순히 해당 배열을 처음부터 끝까지 탐색한다.
int[] numbers = {1, 2, 3, 4, 5};
//일반 for문
for (int i =0; i <numbers.length; i++) {
int number = numbers[i]; //-----numbers의 i 인덱스에 해당하는 요소를 number 변수에 저장
System.out.println(number);
}
//향상된 for문, for-each문
for (int number : numbers) { //numbers의 배열에 있는 값을 다 number 넣는다
//처음에 1을 number에 넣고 for문 한바퀴 돌고..>numbers에 있는 두번째 값을 number에 넣고 한바퀴 돌고..
System.out.println(number);
}
- : 오른쪽의 numbers와 같이 탐색할 배열을 선택하고, :의 왼쪽에 int number와 같이 반복할 때 마다 찾은 값을 저장할 변수를 선언한다. -> 배열의 값을 하나씩 꺼내서 왼쪽에 있는 number에 담고 for문을 수행한다. -> for문의 끝에 가면 다음 값을 꺼내서 number에 담고 for문을 반복 수행한다. -> numbers 배열의 끝에 도달해서 더 값이 없으면 for문이 완전히 종료된다
for-each문을 사용할 수 없는 경우
- 인덱스 값이 감추어져 있어서, int i와 같은 증가하는 인덱스 값을 직접 출력해야 하는 경우에는 사용하지 못 함
//증가하는 index 값 필요할 때
for (int i=0; i < numbers.length; i++) { //몇번의 결과인지 출력할때는 i를 써야하므로,
System.out.println("number" + i + "번의 결과는: " + numbers[i]);
- 다음과 같이 사용이 가능하지만, 이런 경우 for문을 사용하는 것이 더 좋다.
int i = 0; //for문 안에서 사용하는 변수인데, 밖에서 선언해줘야 해서 범위가 너무 넓음.
for (int number : numbers) {
System.out.println("number" + i + "번의 결과는: " + number);
i++
}