2013년 8월 6일 화요일

[2주차 2일] 제어자

조건문 - if, if..else..

 1) if문
  : '조건식' 이 true인 경우 '문장'을 수행한다.
- 형식:   if (조건식) 
             문장;
  ex>
int a = 5;
if(a > 0) {
System.out.println("a > 0 입니다.");
}

 2) if...else 문
  : '조건식' 이 true라면 '문장1'을 수행하고, false라면 '문장2'를 수행한다.
- 형식:   if (조건식) 
                    문장1;
      else
              문장2;
ex>
int a = 5;
if(a > 0)
System.out.println("a > 0 입니다.");
else
System.out.println("a <= 0 입니다.");


* 가급적이면 if와 else뒤에 중괄호로 블럭을 지정해줘서 명확하게 구분을 해주는것이 좋다.
* Java에서는 else if 문은 별도의 문법이 존재하는것이 아니라 else 문 안에 if문이 존재하는 것과 같다.

ex1>
          if(..) {
               ......
          else {
               if (..) {
                     .......
               } else {
                      if(..) {
                             .....
                       } else {
                            .......
                       }
                }
           }

ex2>
           if(..) {
               ......
          } else if(..) {
               ......
          } else if(..) {
               ......
           } else {
                ......
           }

위의 ex1과 ex2는 같은 문법이다.




조건문 - switch....case 문

 - 형식: 
       switch(식) {
case 상수식1: 문장1
break;
case 상수식2: 문장2
break;
case 상수식3: 문장3
break;
default: 문장0
       }
'식'의 결과값이 '상수식1' 이면 '문장1'을 수행하고 'break'문은 switch문을 빠져나간다.
'식'의 결과값이 '상수식2' 이면 '문장2'을 수행하고 'break'문은 switch문을 빠져나간다.
'식'의 결과값이 '상수식3' 이면 '문장3'을 수행하고 'break'문은 switch문을 빠져나간다.
만약, '식'의 결과값에 해당하는 경우가 없다면 'default:' 의 '문장0' 를 실행한다.
기본적으로 '식' 과 '상수식' 에는 int 형 값만 올 수 있다.
JDK7에서는 String 값이 올 수 있다.

ex1>
int a = 400;
switch(a * 5) {
case 50:
System.out.println("a * 5는 50입니다.");
System.out.println("따라서, a는 10입니다.");
break;
case (20 * 100):
System.out.println("a * 5는 2000입니다.");
System.out.println("따라서, a는 400입니다.");
break;
default:
System.out.println("a는 5의 배수이겠지요");
a = 0;
}

ex2>
int a = 2;
switch(a) {
case 3:
System.out.println("[SCJP 자격증]이 있습니다.");
case 2:
System.out.println("[정보처리 자격증]이 있습니다.");
case 1:
System.out.println("[전자상거래 자격증]이 있습니다.");
default:
System.out.println("[운전면허증]이 있습니다.");
}

* case 문은 break 문을 만날 때 까지 수행하기 때문에 사용시 유의해야 한다.





반복문- while, do..while 문

1) while문
: '조건식'의 값이 참일때만 while문의 { } 문을 수행한다.
 - 형식:
  while(조건식) {
  문장1
}
ex>
int a = 0;
while(a < 10) {
System.out.println("a = " + a);
a++;
}

2) do...while문
: 일단 '문장1'을 수행후 '조건식'의 값이 true이면 계속 do { } 문을 반복하여 수행한다.
- 형식:
  do {
  문장1
  }while(조건식);
ex>
int a = 0;
do{
System.out.println("a = " + a);
a++;
}while (a < 10);

* 즉, do... while 문은 1 이상을 반복하고, while 문은 조건이 만족 안하면 반복 안한다.






반복문- for 문

 : 특정횟수만큼 반복 할때 사용 (인덱스 값을 사용하여 반복처리를 할 때 유용)
- 형식:
  for(초기화 문장; 조건식; 증가문)
  문장1
 초기화 문장: 보통 인덱스 값을 초기화 시키는 문장이 온다.
 조건식: true 이면 for문의 { } 문장을 수행하고, false 이면 for 문을 빠져나간다.
 증가문: 보통 인덱스 값을 증가시키는 문장이 온다.

ex>
for(int index = 0; index < 10; index++) 
System.out.println("index = " + index);




break, continue

break: 현재블럭을 벗어나는것.
ex>
int index = 0;
for( ; ; ){
if(index >= 10)
break; // for문의 실행을 멈추고 빠져나간다.

System.out.println("index = " + index);
index++;
}
System.out.println("마지막 index 값 = " + index);

continue: 반복문 처음으로 가서 다음 반복 수행하는 것.

ex>
for(int i = 0; i < 9; i++) {
if(i == 5)
continue;
System.out.println("i = " + i);
}
 0 에서 9까지 출력하되 단, i 값이 5이면 더이상 그 이하는 수행하지 않고
 막바로 for문의 증가문에서 수행을 계속한다.



Label의 사용과 break

ex>
AAA:
{
for(int i = 1; i < 10; i++) {
System.out.println("구구단 " + i + " 단");
for(int j = 1; j < 10; j++){
if(i > 5)
break AAA;
System.out.println(i + " * " + j + " = " + i * j);
}
}
System.out.println("반복문 끝");
}
System.out.println("끝");

이중 for문을 사용한 경우에 break를 수행하더라도 현재 돌고 있는 for문만을 벗어나는데 위와 같이 Label을 이용해서 해당 블록을 벗어나면 모든 for문을 완전히 벗어날 수 있다.
결과를 돌려보면 System.out.println("반복문 끝"); 이 부분이 출력되지 않음을 알수 있다.





















댓글 없음:

댓글 쓰기