티스토리 뷰

프로그램 코드를 작성할 때 일정 조건까지 반복해서 수행하기 위해서 반복문을 사용한다. 반복한다는 것은 시작값이 있고 종료값조건이 있고 얼마나 증감 또는 감소하는 값 즉 스텝이 있다. 모든 언어의 반복문은 비슷한 문법구조를 가지고 있으며 반복문을 사용하게 만드는 컬렉션은 언어마다 다른 타입이 있으며 컬력션 타입에 따라 사용방법이 조금씩 틀리다. 자바에서 set을 하우스키핑기법으로 코드로 작성할 수 있을까?

for ( int I = p; i < carSet ; I++) {
   CarSet carSet = .....
}
... 에 어떤 문장을 완성해야 할까? 한번 생각해 보자. foreach문을 사용해야 한다. 즉 프로그램 언어별로 제공되는 타입에 따라서 적절히 사용해야 한다.

반복문을 다음과 같은 방법을 제공한다.

  1. 루프카운트를 관리하는 하우스키핑 [ 전형적인 방법 : for( 초기값, 종료조건, 증감값 ) ]
  2. foreach [ for( 타입 : 컬렉션 } ]
  3. while
  4. do... while

1. 루프 카운드를 관리하는 하우스키핑

전통적인 방법으로 루프 카운트 지역 변수에 초기값, 종료조건, 증감으로 반복문을 작성하는 방법으로 루프카운트 변수의 값의 변화에 따라서 무한루프에 빠질 수 있고 for문 블록 안에서 지역변수인 루프 카운트 변수를 조작하게 되면 예상하지 못한 잠재적 오류가 발생할 수 있는 단점이 있으므로 주의해야 한다.

2. foreach문

일반적으로 많은 개발자들이  추천하는 방식으로 컬렉션을 순회하면서 어떤 작업을 할 때는 가장 효과적이다. 단 요소의 값을 변경해서 해당 위치의 값을 변경하기 위해서는 별도의 작업이 필요하다. 다음 예시이다.

List <고객객체> 고객s = ....
List <고객객체> 고객Tmps = new LinkedList <>()
for ( 고객 고객 : 고객s) {
   고객.set이름(홍길동)
   고객Tmps.add(고객)
}

 

3. while 종료조건식

while문을 작성할 때 주의 사항은 무한 루프에 빠지지 않는 것이다. 종료조건식으로 작성하는 지역변수를 while 블록 안에서 사용할 때 잘못 설정하면 종료조건식에 만족하지 않아서 무한루프에 빠지게 된다. 

4. do ... while 종료조건식

while문과 틀린 점은 무조건 한번 실행 후 조건식을 검사하는 것으로 주의사항은 while문과 동일하다.

반복문을 작성할 때는 반복문 블록에서 빠져나오지 못하는 무한루프에 빠지지 않도록 주의를 해야 하며 반복문안엑서 탈출을 하기 위해서 break 문을 사용하고 블록 안에서 특정 조건이 만족하면 다음을 처리하기 위해서 continue문을 사용해서 블록 안에서 오랜 시간이 걸리지 않도록 하여야 한다. 마지막으로 반복문 블록안에서 긴 코드로 만들어진다면 함수 분리 방법과 함수 인라인 방법을 사용해서 블록 안은 긴 코드로 작성하지 않는 습관을 키워야 한다.