자바의 반복문

hams·2023년 12월 14일
0

자바

목록 보기
7/11
post-thumbnail

반복문은 이름 그대로 특정 코드를 반복해서 실행할 때 사용한다.

1.while

while문은 조건에 따라 코드를 반복해서 실행할 때 사용한다.

while (조건식) { // 코드
}
  • 조건식을 확인한다. 참이면 코드 블럭을 실행하고, 거짓이면 while문을 벗어난다.
  • 조건식이 이면 코드 블럭을 실행한다. 이후에 코드 블럭이 끝나면 다시 조건식 검사로 돌아가서 조건식을 검사 한다.(무한 반복)

잘 작성된 코드란?

변경 상황이 발생했을 때 변경해야 하는 부분이 적을수록 좋은 코드라고 할 수 있다.

2.do-while

do-while 문은 while 문과 비슷하지만, 조건에 상관없이 무조건 한 번은 코드를 실행한다.
do-while 문은 최초 한번은 코드 블럭을 꼭 실행해야 하는 경우에 사용하면 된다.

package loop;

public class Dowhile2 {
    public static void main(String[] args) {
        int i =10;
        do {
        // 최소 1번 출력한다
            System.out.println("현재 숫자는 :" +i);
            i++;
        } while(i < 3);
    }
}

위는 i<3이라는 조건에 맞지 않지만 현재 숫자는 10이라는 출력이 1번 나오게 된다

++break, continue

breakcontinue 는 반복문에서 사용할 수 있는 키워드다.

  • break 는 반복문을 즉시 종료하고 나간다. continue 는 반복문의 나머지 부분을 건너뛰고 다음 반복으로 진행하는 데 사용된다.
  • while , do-while , for 와 같은 모든 반복문에서 사용할 수 있다.

break

while(조건식) { 
	코드1;
	break;//즉시 while문 종료로 이동한다.
	코드2; 
}
//while문 종료 

break 를 만나면 코드2 가 실행되지 않고 while문이 종료된다.

continue

while(조건식) { 
	코드1;
	continue;//즉시 조건식으로 이동한다.
	코드2; 
}

continue 를 만나면 코드2 가 실행되지 않고 다시 조건식으로 이동한다. 조건식이 참이면 while 문을 실행한다.

3.for

for문도 while문과 같은 반복문이고, 코드를 반복 실행하는 역할을 한다. for문은 주로 반복 횟수가 정해져 있을 때 사용한다.

  • for (; ; ) 를 보면 조건식이 없다. for문은 조건이 없으면 무한 반복한다.
for (1.초기식; 2.조건식; 4.증감식) { 
	// 3.코드
}
  1. 초기식이 실행된다.주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번 사
    용된다.
  2. 조건식을 검증한다. 참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.
  3. 코드를 실행한다.
  4. 코드가 종료되면 증감식을 실행한다. 주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가할 때 사용한
    다.
  5. 다시 2. 조건식 부터 시작한다. (무한 반복)

for vs while

코드를 비교해보자

//for
package loop;
 public class For2 {
     public static void main(String[] args) {
         int sum = 0;
         int endNum = 3;
         for (int i = 1; i <= endNum; i++) {
             sum = sum + i;
             System.out.println("i=" + i + " sum=" + sum);
         }
	} 
}
//while
 package loop;
 public class While2_3 {
     public static void main(String[] args) {
         int sum = 0;
         int i = 1;
         int endNum = 3;
         while (i <= endNum) {
             sum = sum + i;
             System.out.println("i=" + i + " sum=" + sum);
i++; }
} }

둘을 비교했을 때 for문이 더 깔끔하다는 느낌을 받을 것이다. for문은 초기화, 조건 검사, 반복 후 작업 등이 규칙적으로 한 줄에 모두 들어 있어 코드를 이해하기 더 쉽다. 특히 반복을 위해 값이 증가하는 카운터 변수를 다른 부분과 명확 하게 구분할 수 있다.

정리하면 for문이 없이 while문으로 모든 반복을 다를 수 있다. 하지만 카운터 변수가 명확하거나, 반복 횟수가 정해진 경우에는 for문을 사용하는 것이 구조적으로 더 깔끔하고, 유지보수 하기 좋다.

4. for-each(향상된 for문)

향상된 for문은 배열에서 자주 쓰이는 개념으로 각각의 요소를 탐색한다. for-each문이라고도 많이 부른다.


for (변수 : 배열 또는 컬렉션) {
// 배열 또는 컬렉션의 요소를 순회하면서 수행할 작업
}
  • for-each문 내부에 인덱스랑 종료 조건이 숨겨져있어서 편안하게 쓸 수 있다.
  • 향상된 for문은 배열의 인덱스를 사용하지 않고, 종료 조건을 주지 않아도 된다. 단순히 해당 배열을 처음부터 끝 까지 탐색한다.
  • : 의 오른쪽에 numbers 와 같이 탐색할 배열을 선택하고, : 의 왼쪽에 int number 와 같이 반복할 때 마다 찾은 값을 저장할 변수를 선언한다. 그러면 배열의 값을 하나씩 꺼내서 왼쪽에 있는 number 에 담고 for문을 수행한다. for문의 끝에 가면 다음 값을 꺼내서 number 에 담고 for문을 반복 수행한다. numbers 배열의 끝에 도 달해서 더 값이 없으면 for문이 완전히 종료된다.
  • 향상된 for문은 배열의 인덱스를 사용하지 않고도 배열의 요소를 순회할 수 있기 때문에 코드가 간결하고 가독성 이 좋다.

for-each를 사용할 수 없는 경우

증가하는 index값이 필요한 경우
index를 출력해야 하는 경우는 사용이 불가능하다.

0개의 댓글