자바(4) - 제어 흐름
2021년07월07일제어 흐름
제어 흐름을 통해 우리는 분기를 하여 상황에 맞는 동작을 할 수 있게 해주고 반복되는 일을 효율적으로 처리해줄 수 있다. 대표적으로 if-else와 for, while문이 있다. switch-case도 있는데 글쎄 간단한 결과값일 때는 괜찮을거 같은데 잘 안쓰이는 거 같다. 실무에서는 또 어떻게 될지 모르겠다. (얼른 취업해보고 싶다~~)
조건문
조건문이란 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것으로 if-else, switch-case가 있다.
if-else
문법은 다음과 같고 조건식에는 이전에 배운 논리 연산자를 이용한다. if 조건식이 true이면 수행문1이 동작되고, false 이면 else 가 실행된다.
if(조건식1) {
수행문1
} else {
수행문2
}
여러 조건식을 걸어야 할 때도 있기에 else if문을 추가할 수 있다. if와 else는 한 if-else 세트에서 하나씩만 존재가능한데, else if는 여러개를 넣어도 무방하다.
if(조건식1) {
수행문1
} else if(조건식2) {
수행문2
} else {
수행문3
}
switch-case
switch-case는 조건값이 단순할 때 사용하기 좋은데 다음과 같다.
switch(rank) {
case 1: medalColor = 'G';
break;
case 2: medalColor = 'S';
break;
default: medalColor = 'A';
}
rank값이 무엇이냐에 따라 분기하기 좋다. 그래서 주로 int형이나 char형일 때 사용하기 좋다. 단, 주의할 점으로 case마다 break를 써주어야 하는데, 안 써주면 이후의 case도 다 걸리기 때문이다. 예를들어 위의 코드서 전부 break없다 치고 case 1이면 medalColor는 G가 되었다가 case2으로 내려가 S가 된다. 그렇기에 꼭 break를 써주어야 한다. default는 아무 case에 속하지 않을 때 기본적으로 주기 위해 있는 것이다.
반복문
반복문은 특정 동작을 반복적으로 수행할 때 사용하는 것이다. 숫자와 함께 5번 내이름을 출력한다 생각하자. 그럼 다음과 같다.
System.out.println("미소여우1");
System.out.println("미소여우2");
System.out.println("미소여우3");
System.out.println("미소여우4");
System.out.println("미소여우5");
같은 내용 5번 출력은 어렵지 않다. 그런데 1000번 출력하라면? 1억번 출력하라면? 많이 무리일 것이다. 이럴 때 우리 단순 노동을 잘해주는 컴퓨터에게 반복적인 일을 맡기면 된다. 이를 위해 for문과 while문을 사용한다. do while도 있는데, 필자는 거의 사용을 안해보았다.
while
while문의 구조는 다음과 같다.
while(조건식) {
수행문
}
// 실제
int i=0;
while(i<5) {
System.out.println(i);
i++;
}
위에서 배운 if처럼 조건식이 참이어야 수행문이 실행된다. i를 출력하고 1씩 증가시키고, i가 6이 되면 false가 되어 종료된다. while문의 대표적인 활용으로는 조건식에 true를 넣어 의도적으로 loop를 걸 수 있다. 이를 통해 특정일을 반복하다가 멈출 필요 있을 때 멈추게 한다.
for
for문의 구조는 다음과 같다.
for(초기화식;조건식;증감식) {
수행문;
}
// 실제
for(int i=0; i<5; i++) {
System.out.println(i);
}
초기화 한 i가 조건식이 참일 때까지 반복시킨다.
continue, break
while과 for문 둘 다 continue와 break를 사용해 의도적으로 건너뛰거나 반복문을 중지할 수 있다.
for(int i=0; i<10; i++) {
if(i%2==0) continue;
System.out.println(i);
}
짝수인 경우 다시 continue를 만나 이후 내용은 건너뛰게 되고, 홀수만 출력하게 된다.
int i=0;
while(true) {
if(i == 100) break;
i++;
}
loop인 상태에서 1씩 증가시키다 i가 100이 되면 break를 만나 반복문이 종료된다.
미소여우의 주석달기