while 문 이란?
while문도 for문과 마찬가지로 ~동안 이라는 뜻을 가지고 있는 반복문입니다.
이전 포스트에서 for문에서 ~동안을 의미하는 곳이 조건식이라고 설명했습니다.
while문도 마찬가지로 '조건식' 동안 반복을 하겠다는 의미가 됩니다.
조금 더 자세히 알기 위해서 for문의 수행 과정을 복습해보겠습니다.
첫 번째 수행 (초기값),
먼저, '초기값'에 들어가는 내용은 0개 이상 작성하면 됩니다.
초기값을 설정하지 않아도 수행되는 것이죠.
저는 3개의 변수 i, j, cnt를 초기값으로 특정 값을 할당 했습니다.
두 번째 수행 (조건식),
조건동안 for문을 수행할 수 있는지 확인합니다.
조건은 i < j 이므로, (i : 10) < (j : 20) 를 만족합니다.
두 번째 수행에서 조건을 만족하는 경우 세 번째 수행으로 넘어가고,
조건을 만족하지 않는 경우 여기서 for문은 종료됩니다.
※ 조건식은 boolean 값만 됩니다. C++은 다름.
세 번째 수행 (문법),
두 번째 수행에서 만족한 경우 세 번째 수행을 합니다.
세 번째 수행은 for 문의 중괄호 { } 로 묶여 있는 문법을 수행하는 것 입니다.
우리가 수행할 문법은 for문의 각 수행 횟수에 대한 i와 j를 출력합니다.
모든 문법이 끝나면 네 번째 수행을 시작합니다.
네 번째 수행 (증감식),
사람들이 말을 증감식으로 표현한 것이지 사실은 다음 수행할 명령입니다.
즉 문법에서 마지막 줄에 추가하는 것과 같습니다.
우선 위 코드에서 해당하는 네 번째 수행은 cnt와 i를 1씩 증가하고 j를 2씩 감소하는 것입니다.
다섯 번째 수행 (반복),
조건식에 따라 종료 될 때까지 반복합니다.
for에서 초기 조건과 증감식을 제외한 예제를 작성했었는데요.
int i = 0;
for (; i < 10; ) i++;
위 코드와 같은 형태였죠? 여기서 세미콜론(;)을 없애고 for를 while로 바꾸면 그냥 while문 입니다.
int i = 0;
while (i < 10) i++;
// or
while (i < 10) {
i++;
}
while문도 for문과 마찬가지로 조건식에는 boolean 값이 들어가야합니다.
continue와 break를 작성하는 것 또한 똑같습니다.
for문과의 차이
위 설명만 들었을 때는 for문과 차이가 없죠??
for문의 경우, 초기값과 증감식에 대한 정보를 별도로 저장해둡니다.
그리고 맨처음 초기값 선언을 포함한 총 5번의 연산을 수행하게 되죠.
반면에, while문은 초기값에 대해 별도로 저장할 수 없으며 while 문 밖에서 할당을 해야하죠.
즉, 주로 for문은 for문 내부의 데이터를 연산할 때 사용하고
while문은 for문 외부의 데이터를 연산할 때 사용합니다.
for (int i = 0; i < 10; i++) {
System.out.printf("%d ", (i+1));
}
int i = 0;
while (i < 10) {
System.out.printf("%d ", (i+1);
}
첫 번째 수행 (조건식),
조건동안 while문을 수행할 수 있는지 확인합니다.
조건을 만족하지 않는 경우 여기서 while문은 종료됩니다.
※ 조건식은 boolean 값만 됩니다.
두 번째 수행 (문법),
while 문 블럭( 중괄호, {} ) 내에 표현 된 문법들을 수행합니다.
※ 이 때, while문을 종료시키기 위한 조건을 판별하기 위해 if문과 break, continue 문을 섞어서 사용합니다.
세 번째 수행 (반복)
do - while 문
while 문에는 do - while문이라는 것도 존재합니다.
do - while문은 먼저 실행 후에 조건식을 검사하는데요.
while문은 세 가지 수행을 하는데 do - while문도 마찬가지로 세 가지 수행을 합니다.
다만 순서가 바뀝니다.
첫 번째 수행 (문법),
do 문 블럭( 중괄호, {} ) 내에 표현 된 문법들을 수행합니다.
※ 이 때, do-while문을 종료시키기 위한 조건을 판별하기 위해 if문과 break, continue 문을 섞어서 사용합니다.
두 번째 수행 (조건식),
조건동안 do-while문을 수행할 수 있는지 확인합니다.
조건을 만족하지 않는 경우 여기서 do-while문은 종료됩니다.
※ 조건식은 boolean 값만 됩니다.
세 번째 수행 (반복)
public class Main
{
public static void main(String[] args) {
int i = 0;
do {
System.out.printf("%d ", ++i);
}
while (i < 10);
}
}
노션 정리 URL
https://www.notion.so/24jihwan/019643d1ca304dd684ceaa73c34cf08e
'JAVA > 기본 이론' 카테고리의 다른 글
10. Casting (형변환) (0) | 2024.07.14 |
---|---|
4. 입/출력 (Input/Output, I/O) (0) | 2024.02.24 |
8. 반복문 - for 문 (1) | 2024.02.10 |
7. 다차원 배열 (Multi Dimensional Array) (1) | 2024.02.10 |
6. 배열 (Array) (1) | 2024.02.10 |