Just do IT
article thumbnail
Published 2022. 12. 20. 10:34
Java Control (반복문) Programing/JAVA

반복문 (looping statements)

※ loop : 고리, 순환, 고리 모양을 만들다

- 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문입니다.

- 자바에서 사용하는 대표적인 반복문은 4가지가 있습니다.

- while문, do/while문, for문, enhanced for문


▶ while문
※ while : ~하는 동안 

- while문 : 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행합니다.

- 자바에서 while문의 문법 구조입니다. ▼

while (조건식) {
	조건식의 결과가 참(true)일 때 반복적으로 실행하고자 하는 명령문;
}

- while문의 실행 순서 
  while문 조건식 확인 -> 참 ->주어진 명령문 실행 -> while문 조건식 확인
  -> 조건이 거짓이 될 때 까지 반복

- while문을 사용할 때 조건을 잘못 설정하면 무한루프(infinite loop)에 빠지게 됩니다.
   무한루프에 빠지면 프로그램은 영원히 종료되지 않기 때문에 조심해야 합니다.

- while문의 예시 

public class Control {
	public static void main(String[] args) {
    	int i = 0;
        
        while(i < 5) {
            System.out.println("while문  " + i + "번째 실행 중");           
            i++; // 없으면 무한루프에 빠진다
        }
        System.out.println("while문  " + i + "번째 실행 종료");
    }
}
---------------------------------------------------------------------
출력 결과
while문 0번째 실행 중
while문 1번째 실행 중
while문 2번째 실행 중
while문 3번째 실행 중
while문 4번째 실행 중
while문 5번째 실행 종료

- i++의 조건이 없을 경우 i는 0이기 때문에 while의 조건이 참이 되기 때문에 무한루프
빠질 수 있습니다.

※ while문에서 실행될 명령문이 한 줄 뿐이라면 중괄호{}를 생락할 수 있습니다.

 

▶ do/while문

- do/while문 : 특정 조건과 상관 없이 명령을 무조건 한번은 실행해 준 후에 조건을 검사합니다.

- 자바에서 do/while문의 문법 구조입니다. ▼

do {
    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
} while (조건식);

- do/while문의 실행 순서 
  do에 기록된 명령문 실행 -> while의 조건식 확인 -> 참 -> do에 있는 명령문 실행
   -> while의 조건식이 거짓이 될 때까지 반복

- do/while문을 사용할 때 조건을 잘못 설정하면 무한루프(infinite loop)에 빠지게 됩니다.
   무한루프에 빠지면 프로그램은 영원히 종료되지 않기 때문에 조심해야 합니다.

- do/while문의 예시 

public class Control {
	public static void main(String[] args) {
    	int i = 1;
        int j = 1;
        
        while(i < 1) {
            System.out.println("while문  i=" + i + " 실행 중");           
            i++; //없으면 무한루프
        }
        System.out.println("while문  i=" + i + " 실행 종료");
        
         do {
            System.out.println("do/while문  j=" + j + " 실행 중");           
            j++; //없으면 무한루프
        } while(j < 1);
        System.out.println("do/while문  j=" + j + " 실행 종료");
    }
}
---------------------------------------------------------------------
출력 결과
while문 i=1 실행 종료
do/while문 j=1 실행 중
do/while문 j=2 실행 종료

- while문의 경우 조건식이 거짓이기 때문에 바로 종료가 되지만
  do/while문의 경우에는 명령문이 실행된 후에 조건식에 대입을 하기 때문에 
  명령문이 한번은 실행이 되는 모습을 볼 수 있습니다.

※ while문에서 실행될 명령문이 한 줄 뿐이라면 중괄호{}를 생락할 수 있습니다.

 

 for

- for문 : 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문입니다.
             while문에 비해 간결하기도 하며, 시작과 끝이 정해져있어서 무한루프에 빠질 확률이 매우 낮습니다.

- for문의 문법 구조입니다. ▼

for (초기식; 조건식; 증감식) {
    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
}

- for문의 실행 순서 
  초기식(시작 시점) 설정 -> 조건식 확인 -> 참 -> 명령문 실행
   -> 초기식의 값 증감 -> 조건식 확인 -> 거짓 -> for문 종료

- 초기식, 조건식, 증감식은 C언어, JAVA, Python마다 형식이 다르다.
   < JAVA 형식 >
   초기식 : int i = 0
   조건식 : i < 5
   증감식 : i++ 

- for문의 예시

for (i = 0; i < 5; i++) {
    System.out.println((i) + "번째 for문")
}
System.out.println(i + "번째 for문 종료");
---------------------------------------------------------------------
출력 결과
0번째 for문
1번째 for문
2번째 for문
3번째 for문
4번째 for문
5번째 for문 종료

- 구구단과 같은 경우 for문을 사용하면 좀 더 쉽게 구현할 수 있다.

 

 enhanced for문 

- enhanced for문 : JDK 1.5부터 추가된 for문으로 컬렉션, 배열에서 사용할 수 있습니다.
  배열이나 컬렉션에 있는 모든 요소를 하나씩 꺼내서 사용해야할 경우 사용하면 됩니다.
   (자바스크립트의 for each와 비슷한 유형)

- enhanced for문의 문법 구조입니다. ▼

 for (타입 변수이름 : 배열이나컬렉션이름) {
    배열의 길이만큼 반복적으로 실행하고자 하는 명령문;
}

- enhanced for문의 실행 순서 
  배열이나 컬렉션의 요소를 하나씩 왼쪽 변수에 담음 -> 명령문 실행
   -> 배열이나 컬렉션의 길이 만큼 반복

- 배열이나 컬렉션의 요소를 사용하기 위해 따로 length를 구해야 하는 번거로움이 사라진다.
   단!  요소의 값을 변경하는 작업에는 적절하지 않습니다.
  왼쪽 변수이름에 값을 넣을 때 이는 원본의 복사본이기 때문에 아무리 계산을 해도 원본에 영향을 주지 못하기 때문입니다.

- enhanced for문의 예시

int[] arr = new int[]{1, 2, 3, 4, 5};

for (int e : arr) {
    System.out.print(e + " / ");
}
---------------------------------------------------------------------
출력 결과
1 / 2 / 3 / 4 / 5 /

 

반복문은 자주 사용하기 때문에 알아두면 매우 편리할 것이다.
암기는 하지 않더라도 for문, while문, enhanced for문 이라는게 있다는 정도는 기억해두자.
나머지 사용법은 구글에게 물어보면서 하면 된다. 
 

출처 :  http://tcpschool.com/java/java_control_loop


분기문(branching statements)

 

'Programing > JAVA' 카테고리의 다른 글

Java Control (분기문)  (0) 2022.12.20
JAVA 제어문  (0) 2022.12.09
자바 - 기본 함수  (0) 2022.12.06
데이터 출력 변환 (null -> 0 / 0 -> null)  (0) 2022.11.30
Java Control (조건문)  (0) 2021.07.19
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!