for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for문은 반복 횟수를 알고 있을 때
주로 사용 하고, while문은 조건에 따라 반복할 때
주로 사용한다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐일 뿐 동작 방식은 동일하다.
주어진 횟수만큼 실행문을 반복
각각의 초기식, 조건식, 증감식은 생략 가능하다.
단, 조건식이 생략되면 무조건 참으로 인식하여 break문을 적절히 활용해야 한다.
초기화식 생략된 경우
// 예시 int i = 1; for (; i<=100; i++){...}
조건식 생략된 경우
// 예시 for (int i=0; ; i++){ sum += i; if(sum > 200){ break; } }
증감식 생략된 경우
// 예시 for (int i=0; i < 5; ){ ... i = (++i) % 10; }
초기식, 조건식, 증감식 모두 생략된 경우: 무한루프
for(;;){...}
초기식, 증감식은 콤마(,)를 이용하여 여러개 선언이 가능
for (int i=0, j=100; i<=50 && j>=50; i++, j--) {...}
for(타입 변수명: 배열 또는 컬렉션){ // 배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀짐 }
JDK 1.5이상에서 가능하며, 배열처럼 여러 원소로 이루어진 집합의 모든 원소에 대해 특정 작업을 반복하기 위해 사용된다.
do-while문은 조건식에 의해 반복 실행한다는 점에서는 while문과 동일하다. while문
은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지를 결정하지만, do-while문
을 통해서는 블록 내부의 실행문을 우선 실행
하고 실행결과에 따라서 반복 실행을 계속할지 결정할 수도 있다.
while문: 조건문이 true일 경우 실행문 반복
while(조건문){ // 실행문; }
do-while문: 우선 실행문을 실행한 후, 조건문이 true일 경우 실행문 반복
do{ // 실행문; }while(조건문);
반복문을 실행 중지 할 때 사용한다. 만약 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료하지 않는다. 중첩된 방복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름을 붙이고, 'break 이름'
을 사용하면 된다. continue 또한 이름 적용이 가능하다.
// 바깥쪽 반복문 종료 예시 public class BreakOutterEx{ public static void main(String[] args){ Outter: for(char upper='A'; upper<='Z'; upper++){ for(char lower ='a'; lower<='z'; lower++){ System.out.println(upper + "-" + lower); if(lower == 'g'){ break Outter; } } } System.out.println("프로그램 실행 종료"); } }
반복문 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while문, do-while문의 조건식으로 이동한다. continue문은 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break문과는 다르다. 특정 조건을 만족하는 경우 continue문을 통해 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.
Ref.
책: 혼자 공부하는 자바
.java의 개발일기