
Java: 제어문
2013, Jul 22
조건문
조건문은 조건을 제시한 뒤 만족하거나 불만족할 때의 분기를 제어한다. 조건식은 반드시 boolean으로 평가되는 표현식이어야 한다.
if-then-else
if
~ else if
~ else
구간 중 만족하는 조건이 있다면 블록을 실행하고 if문을 끝낸다. if문 안에 if문을 또 작성할 수 있다.
if (조건식) {
실행문
} else if (조건식) {
실행문
} else {
실행문
}
String str = "hello";
if ("hello".equals(str)) {
if (str.length() == 5) {
System.out.println("is 'hello'");
} else if (str.length() > 5) {
System.out.println("something wrong");
}
} else {
System.out.println("is not 'hello'");
}
switch-case
조건 1개로 제어 분기. 단, 조건은 int로 변환 가능한 타입과 String(JDK1.7 이상부터), enum 변수만 가능하다.
switch (조건) {
case 값1: // label
실행문;
break;
case 값2:
실행문;
break;
default: // if문의 else와 같다. 위에 열거된 case에 모두 해당되지 않으면 실행
실행문;
break;
}
char character = 'A';
switch (character) {
case 'A':
System.out.println("A");
case 'B':
System.out.println("B");
break;
} // case 'A'에 break가 없어서 case 'B'도 같이 실행된다.
반복문
for loop
특정 실행 코드 블록을 원하는 횟수만큼 반복 제어
for (초기식; 조건식; 증감식;) { // 조건식이 TRUE일 때 실행문을 반복한다.
실행문
}
byte[] bytes = "한글나라".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
for (;;) {
// some...one?
}
이렇게 하면 무한루프가 된다.
향상된 for문 enhanced for loop statement
for (variable ele : locationEle) { // locationEle : 배열 또는 컬렉션
실행문
}
int[] n = new int[] {40, 20, 10, 50, 30, 60, 35, 41, 23, 78} ;
// n의 배열 길이만큼 루프를 돌되 각 사이클마다 i에 n의 요소를 할당한다.
for (int i : n) {
System.out.println(i);
}
다음처럼 배열이나 컬렉션을 인라인으로 선언하여 사용하기도 한다.
for (String i : new String[] { "+", "-", "*", "/" }) {
// ...
}
while
조건식이 TRUE면 실행문을 반복한다.
while (조건식) {
실행문
}
int n = 1; //초기식
while (n < 11) { //조건식
System.out.println(n);
++n; //증감식
}
아래는 무한루프에서 탈출 분기를 설정하는 방법.
while (true) {
...
if (.....) {
break;
}
}
do…while
while과 비슷하지만 실행문을 우선 실행 후 조건식을 평가한다.
do {
실행문
} while (조건식);
int n = 1;
do {
System.out.println(n);
++n;
} while (n<=10);
점프문
break
현재 위치에서 가장 가까운 switch 혹은 반복문을 탈출(중단)한다.
for (int i = 1; i < 11; i++) {
if (i == 5) {
break;
}
System.out.println(i);
} //1,2,3,4
continue
현재 자신이 속한 반복문 처음으로 되돌아간다. 증감식이 존재하면 한 번 수행한다.
for (int i = 1; i < 11; i++) {
if (i == 5) {
continue;
}
System.out.println(i);
}
// 1,2,3,4,6,7,8,9,10
label
반복문에 이름을 부여하고 지칭하는 반복문을 바로 탈출하거나 되돌아간다.
// for문에 Loop1 이라는 이름을 지정
Loop1: for (int i = 2; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
if (j == 5) {
break Loop1; // Loop1 탈출
//break; // for j 탈출
//continue Loop1; // Loop1의 다음 루프로 이동
//continue; // for j 의 다음 루프로 이동
}
System.out.println(i + "*" + j + "=" + i * j);
} // end of for j
System.out.println();
} // end of Loop1