여러분 모두가 이미 알고 있듯.
if (cond1) {
// cond = true, exec this
} else (cond2) {
// cond1 = false and cond2 = true, exec this
} else {
// nothing's true!
}
조건의 경우에는 당연히 비교연산자를 쓸 수 있으며 boolean 타입 변수나 메소드가 될 수도 있고, &&(and), ||(or) 과 같은 연산자를 붙이며 무한으로 길어질 수도 있다.
선택지가 정형화되고 여러개인 케이스에서 유리하다. if와 else if...로 잔뜩 길어진 코드보다 가독성이 뛰어나지만, 모든 if else 구조의 조건문을 switch/case 문으로 바꿀 수는 없다. break를 잊지 말자 - break하지 않으면 성립된 조건으로부터 break를 만날 때까지 모두 실행해 버린다.
int a = 3;
int b = 2;
String operator = "+";
int ans = 0;
switch (operator) {
case "+": ans = a+b;
break;
case "-": ans = a-b;
break;
case "*": ans = a*b;
break;
case "/": ans = a/b;
break;
case "%": ans = a%b;
break;
default: ans = 0;
System.out.println("Wrong Operator!");
break;
조건문이 참인 동안 반복해서 수행한다.
while (true) 를 설정하면 무한반복해서 수행하게 된다. break가 없는 이상 어플리케이션 강제 종료 커맨드 (Ctrl+C, IDE별 종료버튼 등...)를 입력하지 않는 한 멈추지 않는다.
while문 내부에 break; 를 설정하면, while문을 강제종료할 수 있다.
int hair = 20;
while (true) {
System.out.println("머리가 " + hair-- + " 가닥 남았네요.");
if (hair == 0) {
System.out.println("당신은 이제 대머리입니다.");
break;
}
}
또, while문 내부에서 continue;를 만나면 그 아래를 수행하지 않고 while문 가장 위로 돌아가 다시 수행한다.
한 번은 무조건 실행한 다음 조건을 체크하는 do while문도 존재하지만, 잘 사용되지 않는다.
do {
실행할 문장;
} while (조건); // 세미콜론이 붙는다.
가장 많이 사용되는 반복문이다.
for (초기치; 조건문; 증가치){ ... }
조건문이 true일 경우 계속해서 수행한다.
첫 수행에는 초기치 그대로 수행한 다음, 매 수행 시마다 '증가치'를 수행한 다음 수행한다.
(for 문에서 뭔가 걸려 문제가 된다면 꼭 for 내의 세미콜론을 잘 적었는지 확인해 보자... 잘 안 보인다...)
for문에서 역시 continue; 를 쓸 수 있다. continue;를 만나면 아래를 수행하지 않고 다음으로 넘어간다. break; 역시 마찬가지로 만나면 멈춘다.
배열이나 리스트와 같은 여러 개의 값을 가진 자료형을 이용해, 그 요소 하나하나에 대해 전부 루프를 수행하도록 할 수 있는 아주 편리한 방법이다. 기존 for에서 조건문을 조금 다르게 설정하면 된다.
String[] names = {"Mina", "Sana", "Momo"};
for(String name : names) {
System.out.println(name);
}
이 글은 점프 투 자바를 읽고 스터디한 글입니다.