ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 제어문
    Java/java study 2022. 1. 1. 21:47
    반응형
    • 선택문
    • 반복문

    제어문

    '제어문' 이란?

     모든 일을 순차적으로 실행할 수 있다면 아무런 상관이 없겠지만, 조건에 따라 코드를 반복해야 될 수도, 건너뛰어야 될 수도, 순서를 변경해야 될 수도 있는 일이 발생한다. 이때, Java에서는 제어문을 사용하여 코드 실행 흐름을 제어할 수 있다. 즉, 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 하는 것이 제어문이다.

     

    제어문의 종류
    • 선택문 - if-then, if-then-else, if-then-else if-then-else, switch
    • 반복문 - for, while, do-while, for-each
    • 분기문 - break, continue

    선택문

    '선택문' 이란?

     특정 데이터의 값에 따라 수행할 구문을 선택

     

     

    if-then

     if-then 문은 가장 기본적인 제어문 중 하나로 지정한 조건이 만족할 시에 if문 블록{ } 안에 있는 코드가 실행이되고 조건이 만족하지 않을 경우 if문 블록 안에 코드가 실행되지 않고 넘어간다.

    if(조건식){
    	조건식이 true일 경우 실행되는 코드
    }
    
    ex)
    if(num > 0){
    	System.out.println(num + "값은 양수 입니다.");
    }

     

    if-then-else

     if-then 문은 조건이 'true' 일때만 if문 블록이 실행이 됐지만, if-then-else 문은 'false'일 때 else의 블록이 실행된다. 즉, 조건이 'true'일 경우와 'false'일 경우에 따라 코드를 실행시킬 수 있다. 

    if(조건식) {
    	조건식이 true 일 경우 실행되는 코드
    }else{
    	조건식이 false 일 경우 실행되는 코드
    }
    
    ex)
    if(num > 0) {
    	System.out.println(num + "값은 양수 입니다.");
    }else{
    	System.out.println(num + "값은 0 or 음수 입니다.");
    }

     

    if-then-else if-then-else

     코드를 작성하다 보면 양자택일이 아닐 경우가 많다. 상황에 따른 각 조건에 따라 각각마다 다른 코드를 작성할 필요가 발생하는데, 이때 if-then-else if-then-else 문을 사용한다.

    if(조건식1) {
    	조건식1이 true 일 경우 실행되는 코드
    }else if(조건식2) {
    	조건식2가 true 일 경우 실행되는 코드
    }else if(조건식3) {
      ......
    }else if(조건식n) {
    	조건식n이 true 일 경우 실행되는 코드
    }else {
    	모든 조건식이 false 인 경우 실행 되는 코드
    }
    
    ex)
    if(num > 0) {
    	System.out.println(num + "값은 양수 입니다.");
    }else if(num == 0) {
    	System.out.println(num + "값은 0입니다.");
    }else {
    	System.out.println(num + "값은 음수 입니다.");
    }

     


    switch

     switch문은 if문과 마찬가지로 선택 제어문이다.

    • 모든 값, 범위를 기반으로 판단하는 if문과 달리 정수, 열거된 값, 문자, 문자열 만을 사용할 수 있다.
    • 컴파일러를 통해 실행 경로를 설정하는 점프 테이블이 만들어지기 때문에 조건에 따른 경우의 수가 많아지면 if문보다 더 빠른 성능을 보이게 된다. (조건에 따른 경우의 수가 5개 이상이면 성능 차이가 보이기 시작한다.)
    • if문에 비해 간결하고 좋은 가독성을 가지고 있다.
    switch(변수) {
    	case 값1:
        	변수의 값이 값1과 같을 경우 실행되는 코드
            break;
        case 값2:
        ....
        case 값n:
        	변수의 값이 값n과 같을 경우 실행되는 코드
            break;
        default:
        	변수의 값이 어떠한 case와도 같지 않을 경우 실행되는 코드
            break;
    }
    
    ex)
    switch(grade) {
        case 'A':
        	System.out.println("당신의 점수는 100~90점 사이에 있습니다.");
            break;
        case 'B':
        	System.out.println("당신의 점수는 90~80점 사이에 있습니다.");
            break;
        case 'C':
        	System.out.println("당신의 점수는 80~70점 사이에 있습니다.");
            break;
        case 'D':
        	System.out.println("당신의 점수는 70~60점 사이에 있습니다.");
            break;
        default 'F':
        	System.out.println("당신은 재수강 대상자입니다.");
            break;
     }

     

     Java 13버전부터는 switch 연산자를 제공한다. Java 12 버전 이전 switch문은 값을 반환할 수 없고, switch문이 길고 지저분했다. 이러한 단점을 보완하여 나온 것이 switch 연산자이다. switch 연산자는 결과 값을 화살표 연산자(->)로 반환할 수 있으며, multiple case 등을 지원하여 더욱 간결하고 쉽게 작성할 수 있게 되었다.

     


    반복문

    '반복문' 이란?

     특정 코드들이 반복적으로 실행하기 위해 사용

     

     

    for

     반복된 횟수가 고된 경우 사용하거나 index 위치나 값이 필요한 경우 사용된다.

     

    for(초기식;조건식;증감식) {
    	실행 코드
    }
    
    ex) 1~10까지의 합을 구하는 for문
    for(int i = 1 ; i <= 10 ; i++) {
    	sum += i;
    }

     

    for-each

     Enhanced for 문이라고 불리며 index 값이 아닌 요소를 통한 값의 순회를 진행한다. 가변적인 컬렉션의 값을 처리하기 좋다.

    for(Type variable : Collection<Type>, Thpe[] array) {
    	실행 코드
    }
    
    ex) 1~10까지의 합을 구하는 for문
    int [] numArr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    for(int num : numArr) {
    	sum += num;
    }

     

     

    while

     조건식이 true 일 경우 실행 되는 반복문이다. 조건식이 false가 되거나 break문을 만나면 반복문이 중지된다.

    while(조건식) {
    	실행 코드
    }
    
    ex) 1~10까지의 합을 구하는 while문
    
    int i = 1;
    while(i <= 10) {
    	sum += i;
    	i++;
    }

     

     

    do-while

     최소 1번은 코드가 실행되는 반복문이다. 코드가 먼저 실행이 된 후, 조건식에 따라 반복문이 실행된다.

    do{
    	실행 코드
    }while(조건식);
    
    ex) 1~10까지의 합을 구하는 do-while문
    int i = 1;
    do{
    	sum += 1;
        i++;
    }while(i <= 10);

     


    분기문

    '분기문' 이란?

     조건문에서 개발자의 의도에 의해 중간 흐름을 바꿀 수 있는 구문

     

    break

     break 문은 자신이 포함 된 가장 가까운 반복문을 빠져나가는 구문이다.

    for(초기식;조건식;증감식) {
    	실행 코드
    	break;
    }
    
    ex) 1~10까지의 합을 구하는 for문 - break 사용
    for(int i = 1 ; ; i++) {
        if( i > 10 )
        	break;
        sum += i;
    }

     반복문이 중첩되어 있다면 break문은 가장 가까운 반복문만 종료한다.  중첩된 반복문도 종료시키는 방법은 label을 이용하면 된다. label을 이용하면 해당 위치로 반복문을 빠져나가게 된다.

    labelName:
    for(초기식;조건식;증감식) {
    	for(초기식;조건식;증감식) {
    		실행 코드
    		break labelName;
    	}
    }
    
    ex) 구구단 출력 - 9단까지 출력후 for문 종료
    label:
    for(int i = 2 ;; i++) {
    	for(int j = 1 ;; i++) {
        	System.out.printf("%d + %d = %d", i, j, i*j);
            if(i == 9 && j == 9)
            	break labe;
        }
    }

     

    continue

     반복문 내에서 사용 가능하며 반복문 실행 시 continue 아래 부분은 실행되지 않고 반복문을 다시 실행해준다. 전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 쓰인다.

    for(초기식;조건식;증감식) {
    	실행 코드
        continue;
    }
    
    ex) 1~10까지의 합을 구하는 for문 - 단, 5의 값은 제외
    for(int i = 1 ; i <= 10 ; i++) {
    	if(i == 5)
        	continue;
        sum += i;
    }

     


     

     

     

    반응형

    'Java > java study' 카테고리의 다른 글

    Java - LinkedList, Stack, Queue 구현하기  (0) 2022.01.02
    JUnit 5  (0) 2022.01.02
    Java - 연산자  (0) 2021.12.19
    Java - 프리미티브 타입과 레퍼런스 타입  (0) 2021.12.10
    Java - JVM에 대하여  (0) 2021.12.03

    댓글

Designed by Tistory.