본문 바로가기
JAVA

자바 강의 4

by leek94 2022. 12. 28.

Ch04. 제어문


 제어문

 

  • 제어문은 Java 코드의 흐름을 제어하는 데 사용할 수 있는 명령문을 제공하는데 이것을 제어문이라고 한다  
  • 이는 프로그램의 원활한 흐름을 다양하게 제공하기 위함이며, 5개의 제어문과 2개의 제어 키워드가 있다
  • 조건문 : if, switch  
  • 반복 제어문  (Loop 문)  : for, while, do-while  
  • 제어 키워드 (Jump 문)  : break, continue

 

if 문

 

  • if문은 특정 조건에 따라 프로그램을 제어하는 조건문이다  
  • if문의 조건식을 통해 boolean true 또는 false 값을 얻는다   
  • 기본 if 문, if-else 문, if-else-if 문, 중첩 if 문 4가지 유형이 있다  
  • 기본 if 문  : 가장 기본적인 조건문이다. 조건식이 true이면 if문의 코드블럭  {   }   의 실행 구문이 실행 된다  
  • Syntax  

if   (조건식)  {          

      실행 구문;       

}

 

if-else 문

 

  • if-else문은 if 조건이 true이면 if 코드블럭이 실행되고, false 이면  else 코드블록이 실행된다  
  • Syntax  

if   조건식  {

         실행 구문; // 조건이 true일 때 실행        

} else {

        실행 구문; // 조건이 false이면 실행

}

 

if-else if-else 문

 

  • if-else if-else문은 여러 else if문이 체인처럼 포함된 if 문이다  
  • else문은 if문이나 else if문 조건이 모두 false이면 실행 된다  
  • Syntax  

if   조건식1  {

        실행 구문; // 조건식1이 true일 때 실행       

} else if 조건식2  {

       실행 구문; // 조건식2가 true이면 실행       

} else if 조건식n  {

       실행 구문; // 조건식n이 true이면 실행       

} else {

       실행 구문; // 조건식들이 모두 false이면 실행

}

 

 

중첩(Nestde) if문

 

  • 중첩 if문은 if문 안에 또 다른 if문을 중첩해서 넣을 수 있으며, 중첩 횟수는 거의 제한이 없다. 하지만 중첩 if문이 많을 수록 프로그램 흐름이나 조건  제어의 복잡도가 높아지기 때문에 지양해야 한다  

 

  • Syntaxif   (조건식1)  {

          실행 구문; // 조건식1이 true일 때 실행

          if  조건식2  {

          실행 구문; // 조건식2가 true이면 실행           

} else {

          실행 구문; // 조건식2가 false이면 실행           

}       

} else {

         실행 구문; // 조건식1이  false이면 실행

}

 

if문 코드블럭({ })

 

  • if문의 조건이 true일 경우 실행되는 코드블럭을  중괄호   { }  로 감싸는 부분은 단일 실행구문의 경우 Optional로 제외해도 오류는 발생하지 않는다

int i = 20;

if  (i < 10)   {

System.out.println ("i10보다 작다" ); 

} else if  (i < 15)  {

System.out.println ("i15보다 작다") ;

} else {

System.out.println ("조건이 맞지 않았습니다") ;

}

 

 

int i = 20;

if  (i < 10) {

  System.out.println ("i10보다 작다") ;

} else if ( i < 15)  System.out.println ("i15보다 작다" );

} else System.out.println ("조건이 맞지 않았습니다") ;

}

 

Switch 문

 

  • Swtich 문은 if-else if문과 유사하다. case문을 통해 여러 조건과 코드 블럭 을 포함 시킬 수 있다  
  • if-else if문 대신 switch문을 사용하면 코드 가독성을 향상시킨다  
  • case 문의 변수는 byte, short, char, int 또는 enumeration 열거형 과  Java 7버전 부터는 문자열 타입도 지원된다  
  • case문의 종료는 ‘ : ’ 이어야 한다  
  • case문의 코드 블록은 비어있어도 컴파일 오류가 발생하지 않는다  
  • case문의 코드 블록에 break문이 없을 경우 조건이 일치해도 다음 case 문 이 실행된다  
  • break : switch 문이나 반복문을 강제로 빠져나오게 한다  
  • default : if문의 else를 의마하여 case문과 일치하는 않을 때 실행된다
  • 특정변수를 반복적으로 비교해야 할 경우 if문 보다는 switch문을 사용하는게 효과적이다  
  • if문은 종적인 관계로 비교하기 때문에 조건이 많아질수록 실행 속도가 현저하게  떨어지게 된다. 대신 switch문은 횡적인 관계로 비교할 수 있다

중첩 Switch 문

  • switch문 안에 또다른 switch 문을 중첩해서 넣을 수 있다

 

반복문

 

  • 조건식이 true일 동안 반복문의 코드 블록을 반복적으로 실행할 때 사용한다  
  • 반복문은 3가지 유형이 있고, 각 유형별로 구문 및 조건을 확인 시간 차가 있다  
  • for 문  
  • while 문  
  • do-whie 문

for 문

 

  • 동일하거나 유사한 문장을 지정한 수만큼 반복 수행  
  • 한 라인의 코드에 for문에서 사용할 변수를 초기화하고 조건을 확인하고 증가/감소할 수 있다  
  • 수행되는 내용이 단일 행 일 때는 블록 생략 가능  
  • 초기화는 for문 실행 시작 시 한번만 실행  
  • 초기화와 증감식에는 콤마 , 를 사용하여 여러 항목 삽입 가능  
  • 조건식이 비어 있을 경우 무한 루프로 동작한다  
  • 증감식의 경우 조건이 만족할 때 까지 실행된다  
  • break : for문을 강제로 빠져나오게 한다  
  • continue : 실행 순서를 for문의 ‘}’로 옮겨간다

예제)

  • 변수를 두 개 이상 사용하여 반복 제어할 경우 ‘ , ‘ 를 구분자로 사용하여 변수를 초기화하고 업데이트 한다

 

  • for문 안에 for문을 추가하여 중첩으로 실행 할 수 있다

 

for - each Loop (Enhanced for loop)

 

  • 5.0부터 도입되었다  
  • 배열 또는 컬렉션의 element 요소 를 하나씩 꺼내와서 반복처리하는 for Loop이다  
  • 기본 for문 처럼 원하는 요소로 이동하여 처리할 수 없지만, 배열이나 컬렉션의 요소를 순회하여 처리할 때는 사용하는것이 좋다   

 

  • Syntaxfor   (데이터타입 변수명 : 배열 또는 콜렉션)  {

       실행구문;

}

 

 String[ ] names = {"홍길동","김철수","이순신"};

for (String name:names)  {

       System.out.println name ;

}

 

 

while 문

 

  • 조건식이 true일 동안 반복 수행하는 명령으로 반복 횟수를 미리 알 수 없는 경우나 무한 반복 수행시 사용한다  
  • break 명령으로 Loop 작업을 강제 종료하고 블록을 빠져나온다

 

예제)

 

중첩 while 문 예제)

 

do ~ while 문

 

  • while문과 흡사하며, while문이 실행되기 위해 선행되어야 하는 명령을 실행 후 그 데이터를 이용하여 반복작업을 처리하고자 할 경우 사용한다  
  • do { .. }블록 안의 내용을 먼저 실행 후 조건식을 검사하기 때문에 조건식과 상관없이 무조건 한 번은 실행된다  
  • while, for loop문은 zero/many iterative loop, do~while은 one/many iterative loop

예제)

 

 

continue keyword

 

  • 반복문을 실행하는 중에 continue keyword를 만나면 반복문의 시작점 으로 이동하여 명령을 실행 시키는 강제성이 있는 keyword  
  • 잘못 사용할 경우 프로그램의 흐름에 오류가 발생할 수도 있으므로 사용 시 주의해야 한다  
  • while, for, do~while문의 코드 블럭내에서 사용하며 반복문을 벗아나지  않는다

 

break keyword

 

  • break keyword는 반복문 수행 도중 강제적으로 loop를 종료시키는 키워드로  특정 조건에 해당 loop문을 강제 종료할 경우에 사용한다  
  • while, for, do~while문의 코드 블럭내에서 사용

 

레이블을 이용한 제어

  • 반복문에 라벨을 지정하여 break와 continue 명령어에 레이블을 지정하면 해당 위치로 이동된다

public static void main (String args[])

 { // 레이블 first first:

       for  (int i = 1; i < 5; i++)  {

// 레이블 second

second:

for (int j = 1; j < 3; j ++)   {

System.out.println ("i = " + i + "; j = " +j );

if  ( i == 2) {

// 현재 loop를 종료하고 first 레이블의 loop가 종료된다

break first;

} } } }

'JAVA' 카테고리의 다른 글

자바 강의 6  (0) 2023.01.13
자바 강의 5  (0) 2023.01.02
자바 강의 3  (0) 2022.12.28
자바 강의 2  (0) 2022.12.27
22.12.19 자바 강의 1  (0) 2022.12.20