반복문은 개발하면서 사용하는 빈도가 정말 많습니다.
대표적으로 for문과 while문이 있는데 이번에는 while문에 대해서 테스트해보고자 합니다.
은근히 헷갈리는 부분이 while문과 do-while문의 차이점인데 이 부분을 자세히 살펴보도록 하겠습니다.
1. while
while문의 기본 사용법입니다.
while (조건) {
내부실행코드;
}
소스 실행 중 while문을 만나면 가장 먼저 조건이 참인지 거짓인지를 확인합니다.
조건이 참이라면 while문 안에 있는 소스를 처음부터 끝까지 실행하고 다시 조건을 확인하여 조건이 참이라면 또다시 while문 안에 소스를 실행합니다.
반대로 조건이 거짓이라면 while문 안에 있는 소스는 실행되지 않고, while문을 지나치게 됩니다.
예제를 통해 확인해보도록 하겠습니다.
public class TestClass {
public static void main(String[] args) throws Exception {
int count = 0;
// while 문
while(count > 0)
{
count++;
System.out.println("while count " + count);
}
}
}
예제의 코드를 살펴보면 count = 0인데, while문의 조건이 count가 0보다 큰지 물어보고 있습니다.
조건이 거짓이기 때문에 반복문 안에 소스는 실행되지 않고 지나가게 됩니다.
2. do-while
do-while문의 기본 사용법부터 보도록 하겠습니다.
do {
내부실행코드;
} while (조건);
소스 실행 중 do-while문을 만나면 작성한 조건을 확인하기 전에 우선적으로 do-while문 내부의 소스를 실행합니다.
반복문 내부 소스를 한번 실행한 후에 조건을 확인하게 됩니다.
그 후에는 while문과 마찬가지로 참인지 거짓인지에 따라 다르게 실행되게 됩니다.
예제를 한번 보면서 확인해보도록 하겠습니다.
public class TestClass {
public static void main(String[] args) throws Exception {
int count = 0;
// do-while 문
do {
if(count >= 10)
{
break;
}
count++;
System.out.println("do-whild count " + count);
} while (count > 0);
}
}
결과
do-whild count 1
do-whild count 2
do-whild count 3
do-whild count 4
do-whild count 5
do-whild count 6
do-whild count 7
do-whild count 8
do-whild count 9
do-whild count 10
예제 코드를 살펴보면 위의 while문과 같이 count = 0인데, while문의 조건이 count가 0보다 큰지 물어보고 있습니다.
조건은 거짓이지만 가장 먼저 내부 소스를 실행하기 때문에 일단 반복문 내부 소스가 실행되게 됩니다.
그 후에 count++ 로 count가 1이 되기 때문에 조건이 참이 되어서 break를 만나기 전까지 내부 소스가 반복되게 됩니다.
마지막으로 while / do-while의 차이점을 간단하게 정리하면
while문은 조건을 먼저 확인하고 조건에 따라 내부 소스 실행 여부를 결정하게 되고,
do-while문은 조건에 상관없이 내부 소스 1회 실행이 보장됩니다.
상황에 맞게 필요한 반복문을 사용하시면 좋을 것 같습니다.
'IT, 개발 > JAVA' 카테고리의 다른 글
AMQP RabbitMQ Direct Exchange 통신 예제 (JAVA 예제) (0) | 2022.08.29 |
---|---|
JAVA - Json을 Map으로 / Map을 Json으로 형변환(Json to Map, Map to Json) (0) | 2022.08.19 |
log4jdbc 로그 출력하기 (MySQL, Spring Framework, log4j) (0) | 2022.08.02 |
Spring / MySQL 연동 에러 (Could not get JDBC Connection) (1) | 2022.08.01 |
JAVA 시간 차이 계산하기 (Date getTime / SimpleDateFormat) (0) | 2022.07.19 |