지금까지 프로그래밍 언어들 몇 개를 공부하면서 항상 같은 형태의 for문을 사용했었다.
그러다 이번에 코딩테스트 문제를 풀며 나의 코드와 다른 사람들의 코드를 비교하는데 내가 썼던 방식의 for문과 다른 모양의 코드를 보고 신기해서 찾아서 공부 해 보고 정리하기로 했다.
다른 형태의 for문의 설명에 앞서 몇 가지 알아둘 내용을 적어보자면
1. JDK1.5버전 이상부터 지원되는 형태이다.
2. for문 안에 들어가는 변수는 지역변수로 인식된다.
3. 배열등의 인덱스를 점차 증가시키며 알아서 처리한다.
4. 그러므로 사용해야 할 것은 배열이나 리스트 등 여러 원소를 담을 수 있는 자료형이어야 한다.
원래 배웠던 for문은 아래와 같은 방식이다.
for문의 순서는
1. 초기식에 있는 변수를 초기화해주고
2. 조건식이 참이라면
3. 반복될 코드를 실행하고
4. 증감식에 따라 변수의 값을 변경한 다음
5. 2~4를 반복하며 조건식이 거짓이라면 for루프를 빠져나온다.
위의 코드를 for문 순서에 따라 해석해보면
array[0] ~ array[4]까지 1 ~ 5의 값이 순차적으로 출력된다.
하지만 향상된 for문의 형태는
위와 같은 형태로 평소 써왔던 for문과 괄호 안에 들어가는게 다르지만 출력값은 똑같다.
: 를 기준으로 왼쪽에 임시로 사용할 변수를 선언해준다. 이는 지역변수로 인식한다.
오른쪽에는 배열이나 리스트 등 인덱스가 있는 변수의 이름을 적어준다.
그러면 위의 코드 기준으로 array배열의 인덱스 첫 번째부터 마지막까지(0 ~ 4) 자동으로 훑어가며 temp변수에 넣고 중괄호 안의 코드를 반복한다.
때문에 array[0]을 temp에 넣고 출력, array[1]을 temp에 넣고 출력을 인덱스 마지막까지 알아서 반복해준다.
이렇게 for문을 사용하면 간단하기 때문에 가독성이 좋고, 가끔 코딩 실수로 인덱스를 벗어나서 참조하는 경우를 막을 수 있다.
하지만 단점은 인덱스(대체로 i)를 사용할 수 없고, 배열 각 원소의 값을 바꿀 수 없다. (값을 저장하거나 수정하는 것이 불가능하다)
'개발 > Java' 카테고리의 다른 글
[Java] 우선순위 큐와 compareTo() 오버라이드 (백준 11650 예시) (0) | 2022.03.22 |
---|---|
[Java] 자바 소수점 원하는 자리수 만큼 출력 (0) | 2021.08.01 |