Updated:

코드 실행 흐름 제어

 자바 프로그램은 main() 메소드의 시작 중괄호에서 끝 중괄호까지 위에서부터 아래로 실행하는 흐름을 가지고 있다. 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 흐름 제어문이다.
 제어문의 종류는 다음과 같다. | 조건문 | 반복문| |—|—| |if 문, switch 문| for 문, while 문, do-while 문|

 조건문일 경우는 정상 흐름으로 제어문 블록을 빠져 나와 정상 흐름으로 돌아오지만, 반목문일 경우는 제어문의 처음으로 다시 돌아가 반복 실행된다. 이것을 루핑(looping)이라고 한다.

조건문

  • if 문
    • if 문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.
    • 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있다.
    • if 문의 블록 내부에는 또 다른 if 문을 사용할 수 있다. 이것을 중첩 if 문이라 한다.
  • switch 문
    • switch 문은 변수의 값에 따라서 실행문이 결정된다. 이 때문에 if 문 보다 코드가 간결해진다.
      swith(변수){
      case 값1:
      
        break;
      case 값2:
      
        break;
      default:
      }
      
    • switch 문은 괄호 안의 변수값에 따라 해당 case로 가서 실행문을 실행시킨다. 만약 변수값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행시킨다. default가 필요 없다면 생략 가능하다.
    • case 끝에 있는 break는 다음 case를 실행하지 않고 switch 문을 빠져나가기 위해 필요하다.
    • break가 없다면 다음 case가 연달아 실행되는데, 이때는 case 값과는 상관없이 실행된다.
    • switch 문의 괄호에는 정수 타입과 문자열 타입 변수를 사용할 수 있다.
    • Java 12 이후부터는 switch 문에서 Expressions(표현식)를 사용할 수 있다.
    package ch04;
    
    public class SwitchExpressionsExample {
    
      public static void main(String[] args) {
        char grade = 'B';
            
        switch (grade) {
          case 'A', 'a' ->{
              System.out.println("우수 회원입니다.");
          }
          case 'B', 'b' ->{
              System.out.println("일반 회원입니다.");
          }
          default -> {
              System.out.println("손님입니다.");
          } 
        }
      }
    }
    
    • Switch Expressions을 사용하면 스위치된 값을 변수에 바로 대입할 수 있다. 단일 값일 경우에는 화살표 오른쪽에 값을 기술하면 되고, 중괄호를 사용할 경우에는 yield 키워드로 값을 지정하면 된다. 단, 이 경우에는 default가 반드시 존재해야 한다.
    package ch04;
    
      public class SwitchValueExample {
    
        public static void main(String[] args) {
          String grade = "B";
            
          // Java 11 이전 문법
          int score1 = 0;
          switch (grade) {
              case "A":
                  score1 = 100;
                  break;
              case "B":
                  int result = 100 - 20;
                  score1 = result;
                  break;
              default:
                  score1 = 60;
          }
    
          System.out.println("score1: " + score1);
            
          // Java 13부터 가능
          int score2 = switch (grade) {
              case "A"-> 100;
              case "B"->{
                  int result = 100 - 20;
                  yield result;
              }
              default -> 60;
          };
          System.out.println("score2: " + score2);
        }
      }
    

반복문

  • for 문
    • for 문은 실행문을 여러 번 반복적으로 실행해준다.
    • for(초기화식; 조건식; 증감식) {실행문}
      • 초기화식: 조건식과 실행문, 증감식에서 사용할 변수를 초기화하는 역할, 초기화식이 둘 이상 있을 수도 있다.
      • 조건식: i <= 50 && j >= 50같이 둘 이상의 조건식이 들어갈 수 있다.
      • 증감식: i++, j– 처럼 증감식도 둘 이상 있을 수 있다.
    • 초기화식에서 부동 소수점을 쓰는 float 타입을 사용하지 말아야 한다.
    • for 문은 또 다른 for 문을 내포할 수 있는데, 이것을 중첩된 for 문이라고 한다.
  • while 문
    • while 문은 조건식이 true일 경우에 계속해서 반복하고, false가 되면 반복을 멈추고 while 문을 종료한다.
    • 조건식에 true를 사용하면 while(true){…}가 되어서 무한 반복하게 된다. 이 경우, 언젠가는 while 문을 빠져나가기 위한 코드가 필요하다.
  • do-while 문
    • 조건식에 의해 반복 실행한다는 점에서는 while 문과 동일하지만, while 문은 시작할 때부터 조건식을 평가하여 블록 내부를 실행할지 결정하지만, do-while 문은 블록 내부를 먼저 실행시키고, 실행 결과에 따라서 반복 실행을 계속할지 결정한다.
    • 작성 시 주의할 점은 while() 뒤에 반드시 세미클론(;)을 붙여야 한다.

break 문

 break 문은 반복문인 for 문, while 문, do-while 문을 실행 중지하거나 조건문인 switch 문을 종료할 때 사용한다. 만약 반복문이 중첩되어 있을 경우 break 문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않는다. 중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 Label을 붙이고, ‘break 이름;’을 사용하면 된다.

package ch04;

public class BreakOutterExample {

    public static void main(String[] args) {
        Outter:
        for (char upper = 'A'; upper <= 'Z'; upper++) {
            for (char lower = 'a'; lower <= 'z'; lower++) {
                System.out.println(upper + "-" + lower);
                if (lower == 'g') {
                    break Outter;
                }
            }
        }

        System.out.println("프로그램 실행 종료");
    }
}

continue 문

 continue 문은 반복문인 for문, while 문, do-while 문에서만 사용되는데, 블록 내부에서 continue 문이 실행되면 for 문의 증감식 또는 while 문, do-while 문의 조건식으로 바로 이동한다.

댓글남기기