| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 계산기
- lv1
- 프로그래머스
- 추상클래스
- java
- 코드카타
- redis
- 프록시 패턴
- 성능 개선
- Til
- 트러블슈팅
- 디자인 패턴
- 스프링 배치
- Effective Java
- 백엔드
- 김영한
- Spring Batch
- GoF 23
- 스케줄러
- spring boot
- Spring
- 템플릿 메서드 패턴
- 이펙티브 자바
- 자바
- 로드밸런서
- 토스
- 빌더 패턴
- 배치
- DB
- 스프링
- Today
- Total
김코딩
자바 - 반복문 본문
반복문
반복문은 이름 그대로 특정 코드를 반복해서 실행할 때 사용한다.
자바는 다음 3가지 종류의 반복문을 제공한다.
- while
- do-while
- for
while문

- 조건식을 확인한다. 참이면 코드 블럭을 실행하고, 거짓이면 while문을 벗어난다.
- 조건식이 참이면 코드 블럭을 실행한다. 이후에 코드 블럭이 끝나면 다시 조건식 검사로 돌아가서 조건식을 검사 한다.(무한 반복)
예제1
문제: while문을 사용해서 1을 한 번씩 더해서 총 3번 더하는 코드를 만들어보자
package loop;
public class While1_2 {
public static void main(String[] args) {
int count = 0;
while(count<3){
count++;
System.out.println("현재 숫자는 : " + count);
}
}
}
출력

설명:
while (count < 3) 에서 코드 블럭을 반복 실행한다. 여기서 count 의 값이 1 , 2 , 3 으로 점점 커지다가 결국 count < 3 이 거짓이 되면서 while 문을 빠져나간다. while(count < 3) 에 있는 숫자를 while(count < 100) 으로 변경하면 while 문의 코드 블럭을 100번 반 복한다.
예제2
문제: 1부터 하나씩 증가하는 수를 3번 더해라 (1 ~ 3 더하기)
package loop;
public class while2_2 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
int endNum = 3;
while (i <= endNum) {
sum += i;
System.out.println("i = " + i + " sum=" + sum);
i++;
}
}
}
출력

설명 :
반복 횟수 정하기 i 가 endNum 이 될때 까지 반복해서 코드를 실행하면 된다.
- i=1 , endNum=3 이라면 3번 반복하면 된다.
- i=1 -> 2 -> 3 i=3 , endNum=4 라면 2번 반복하면 된다. i=3 -> 4
while문 작성하기
- while 문에서 i <= endNum 조건을 통해 i 가 endNum 이 될 때 까지 코드 블럭을 실행한다.
- i 가 endNum 보다 크면 while 문을 종료한다.
do-while문

- do-while 문은 while 문과 비슷하지만, 조건에 상관없이 무조건 한 번은 코드를 실행한다
package loop;
public class DoWhile2 {
public static void main(String[] args) {
int i = 10;
do {
System.out.println("현재 숫자는:" + i);
i++;
} while (i < 3);
}
}
출력

설명:
do-while 문은 최초 한번은 항상 실행된다. 따라서 먼저 현재 숫자는:10 이 출력된다. 코드 블럭을 실행 후에 조건식을 검증하는데, i=11 이기 때문에 while (i < 3) 조건식은 거짓이 된다. 따라서 do-while 문을 빠져나온다.
do-while 문은 최초 한번은 코드 블럭을 꼭 실행해야 하는 경우에 사용하면 된다.
break, continue
break 와 continue 는 반복문에서 사용할 수 있는 키워드다.
break 는 반복문을 즉시 종료하고 나간다.
continue 는 반복문의 나머지 부분을 건너뛰고 다음 반복으로 진행하는 데 사용된다.
참고로 while , do-while , for 와 같은 모든 반복문에서 사용할 수 있다.


예제1
문제: 1부터 시작해서 숫자를 계속 누적해서 더하다가 합계가 10보다 처음으로 큰 값은 얼마인가?
package loop;
public class Break1 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (true) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료: i=" + i + " sum=" + sum);
break;
}
i++;
}
}
}
출력

설명:
- 조건식을 잘 보면 true 라고 되어있다. 조건이 항상 참이기 때문에 이렇게 두면 while 문은 무한 반복된다. 물 론 break 문이 있기 때문에 중간에 빠져나올 수 있다.
- 만약 sum > 10 조건을 만족하면 결과를 출력하고, break 를 사용해서 while 문을 빠져나간다.
예제2
문제: 1부터 5까지 숫자를 출력하는데, 숫자가 3일 때는 출력을 건너뛰어야 한다
package loop;
public class Continue1 {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
if (i == 3) {
i++;
continue;
}
System.out.println(i);
i++;
}
}
}
출력

설명:
i==3 인 경우 i 를 하나 증가하고 continue 를 실행한다. 따라서 이 경우에는 i 를 출력하지 않고 바로 while (i <= 5) 조건식으로 이동한다.
for 문1
for문도 while문과 같은 반복문이고, 코드를 반복 실행하는 역할을 한다. for문은 주로 반복 횟수가 정해져 있을 때 사 용한다.

for문은 다음 순서대로 실행된다.
- 초기식이 실행된다. 주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번 사 용된다.
- 조건식을 검증한다. 참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.
- 코드를 실행한다.
- 코드가 종료되면 증감식을 실행한다. 주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가할 때 사용한 다.
- 다시 2. 조건식 부터 시작한다. (무한 반복)
예제1
문제: i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더해라 (i ~ endNum 더하기)
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);
}
}
}
출력

설명 : 덧셈의 합을 넣기 위한 sum을 0으로 초기화시켜서 선언한 후, endNum으로 몇번을 반복할 것인지 정하면 된다.
for 문의 조건문을 확인하면 int i = 1부터 시작해서 i <= endnNum; 까지 반복하는거니까 i = 1,2,3 세번 반복하게 된다.
for 문2
for문에서 초기식, 조건식, 증감식은 선택이다. 다음과 같이 모두 생략해도 된다. 단 생략해도 각 영역을 구분하는 세미 콜론( ; )은 유지해야 한다

이렇게 하면 조건이 없기 때문에 무한 반복하는 코드가 된다. 따라서 다음과 같은 코드가 된다.

예제1
문제: 1부터 시작하여 숫자를 계속 누적해서 더하다가 합계가 10보다 큰 처음 값은 얼마인가?
package loop;
public class Break2 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
for (; ; ) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료: i=" + i + " sum=" + sum);
break;
}
i++;
}
}
}
출력

설명:
- for (; ; ) 를 보면 조건식이 없다. for문은 조건이 없으면 무한 반복한다.
- sum > 10 조건을 만족하면 break 를 사용해서 for문을 빠져나간다.
중첩반복문
반복문은 내부에 또 반복문을 만들 수 있다. for , while 모두 가능하다
package loop;
public class Nested1 {
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
System.out.println("외부 for 시작 i:" + i);
for (int j = 0; j < 3; j++) {
System.out.println("-> 내부 for " + i + "-" + j);
}
System.out.println("외부 for 종료 i:" + i);
System.out.println();
}
}
}
출력

설명:
외부 for는 2번, 내부 for는 3번 실행된다. 그런데 외부 for 1번당 내부 for가 3번 실행되기 때문에 외부(2) * 내부(3) 해서 총 6번의 내부 for 코드가 수행된다.
'Java' 카테고리의 다른 글
| 자바 - 다형성1 (0) | 2025.04.01 |
|---|---|
| 자바 - 메서드 (0) | 2025.02.26 |
| 자바 - Scanner (1) | 2024.04.25 |
| 자바 - 형변환 (0) | 2024.04.25 |