향상된 for 문은 주로 배열 또는 컬렉션 객체의 요소들을 쉽게 순회하기 위해 사용된다. Java 5에서 도입된 구문으로, 앞으로 쓰일 일이 많으니 잘 기억해 두자.
향상된 for 문 기본 문법
for (타입 변수 : 배열) {
// 반복할 코드
}
굳이 표현식을 적자면 이렇다만, 그냥 예시를 보는 편이 훨씬 낫다.
전통적인 for 문과의 차이점
String[] names = {"Alex", "Brian", "Chris"};
// 전통적인 for 문
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
위 코드는 우리가 흔히 알고 있는 전통적인 방식의 for 문이다. 변수 i를 통해 반복 횟수를 지정하고, 인덱싱을 통해 이름들을 출력하고 있다.
String[] names = {"Alex", "Brian", "Chris"};
// 향상된 for 문
for (String name : names) {
System.out.println(name);
}
향상된 for 문을 사용하면 불필요한 코드를 줄여 훨씬 간결하게 작성할 수 있다. 배열의 각 요소 (Alex, Brian, Chris)가 변수 name에 순차적으로 할당되어 출력하기 때문에 인덱스는 물론이고 반복 횟수를 지정할 필요도 없다.
그래서 결론은?
두 반복문 모두 동일한 결과를 출력하지만, 향상된 for 문이 더 간결할 뿐 아니라 가독성 역시 우수하다. 하지만 향상된 for 문을 사용하기 위해서는 두 가지 조건이 필요하다.
1. 인덱스가 필요하지 않을 것
2. 요소를 수정할 일이 없을 것
예시를 통한 이해 점검
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
// 배열 요소 수정 시도
for (int number : numbers) {
number = number * 2;
}
// 배열 출력
for (int number : numbers) {
System.out.println(number);
}
}
}
첫 번째 반복문에서 2를 곱해 요소의 값을 변경하였으니, 두 번째 반복문에서 출력하였을 때 2, 4, 6이 순차적으로 출력될 것처럼 보인다.
// 출력 결과
1
2
3
그러나 실제 코드를 실행시켜 보면 배열의 원본 요소인 1, 2, 3이 그대로 출력된 것을 볼 수 있다.
왜 그럴까?
향상된 for 문에서의 변수 number는 각 요소를 복사한 값이다. 즉, 원본 배열에 영향을 미치지 않는다는 이야기다. 물론 배열의 원본을 수정하지 않고, 일회성으로 단순히 출력되는 값만 맞으면 상관없다고 한다면 아래와 같이 코드를 짤 수도 있기는 하다.
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
// 원본 수정 없이 출력
for (int number : numbers) {
number = number * 2;
System.out.println(number);
}
}
}
// 출력 결과
2
4
6
'프로그래밍 > 배웠어, 자바' 카테고리의 다른 글
[Java] if 문, switch 문, 삼항 연산자 (0) | 2025.01.03 |
---|---|
[Java] 객체의 실제 메모리 주소 얻기 (0) | 2024.12.30 |
[Java] ==, equals() /문자열 비교 정복하기 (1) | 2024.12.27 |
[Java] 주요 연산자 알아보기 (0) | 2024.12.23 |
[Java] 기본 변수 한 장 정리 (1) | 2024.12.20 |