제어문과 메서드

제어문 종류

  • 조건문

    • 조건식의 결과에 따라 여려 실행 경로 중 하나를 선택, if문, switch문
  • 반복문

    • 조건에 따라 같은 처리를 반복, for문, while문, do ~ while 문
  • 분기문

    • 실행 흐름을 무조건 변경, break문, continue문

조건문

  • 조건에 따라 실행문을 선택할 때 사용

  • 단순 if문

    • 조건식이 true일 때만 실행문을 수행
    • 조건식에는 true, false 를 산출할 수 있는 연신식, 논리값, 변수가 올 수 있음
    • 조건식이 true 일 때 수행할 실행문이 하나라면, {}를 생략가능
  • 다중 if문

    • 조건식이 다양할 때 사용
    • if문 다음에 else if문을 연속 추가해 각조건을 차례대로 점검한 후 만족하는 실행문을 수행
if (조건식1) {
    실행문(들); 조건식 1이 참일 때만 실행
}
else if (조건식 2) {
    실행문(들); 조건식 1이 거짓이고, 조건식 2가 참일 때만 실행
}
else if (조건식 3) {
    ...
}
else {
    실행문(들); 모든 조건을 만족하지 않을 때만 실행
}
  • 중첩 if 문
    • if 문에 다른 if문이 포함되는 것을 중첩 if문이라고 한다.
    • 주의사항 두 개 이상의 if 뒤에 else 가 걸리면, 그 else는 가장 가까운 if의 else로 들어간다.
package chap03;

import java.util.Scanner;

public class NestedIfDemo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String grade;
        System.out.print("점수를 입력하세요 : ");
        int score = in.nextInt();
        if (score >= 90)
            grade = "A";
        else {
            if (score >= 80)
                grade = "B";
            else {
                if (score >= 70)
                    grade = "C";
                else {
                    if (score >= 60)
                        grade = "D";
                    else
                        grade = "F";
                }
            }
        }
        System.out.println("당신의 성적은 " + grade);
    }
}

반복문

  • while 문

    • 반복할 횟수는 미리 알 수 없지만, 조건을 알 수 있을 때 주로 사용하는 반복문
    • 조건식이 true일 동안 본체 실행문을 반복적으로 수행
  • while (false) 라면 도달하지 않는 코드라는 오류가 발생함

  • do ~ while 문

    • 반복문 본체를 먼저 실행한 후, 조건식을 평가, 따라서 최소 한번은 반복문 본체를 실행함
package chap03;

public class DoWhile2Demo {
    public static void main(String[] args) {
        int i = 10;
        do {
            i++;
        } while (i < 5);
        System.out.println("do~while 문 실행 후 : " + i); // do while 문 한번은 실행됨

        i = 10;
        while (i < 5) {
            i++;
        }
        System.out.println("while문 실행 후 : " + i); // while 실행안됨
    }
}

Practice 3_4

package chap03;

import java.util.Scanner;

public class Practice3_4 {
    public static void main(String[] args) {
        int sum = 0;

        Scanner in = new Scanner(System.in);
        do {
            System.out.print("양의 정수를 입력하세요 : ");
            int i = in.nextInt();
            if (i <= 0)
                break;
            if (i % 2 == 0)
                sum += i;
        } while (true);
        System.out.println("입력한 양의 정수 중에서 짝수의 합은 " + sum);
    }
}
  • for문

    • 반복할 횟수를 미리 알 수 있을 떄 주로 사용하는 반복문

    • 조건식이 true 이면 본체 실행문을 반복적으로 수행

    • 조건식이 false 면 실행문과 증감식은 한 번도 실행되지 않는다.

    • 반복과정: 초기식 실행 후, 조건식 평가, 조건식 false면 for문 종료하고 true면 반복문 본체 실행, 실행 후, 증감식 실행하고 또 조건식 평가 .. 반복

    • 초기식, 조건식, 증감식을 생략하면 무한반복문이 됨.

      for ( ; ; ) // 무한 반복문
      ;
  • 초기식이나 증감식이 2개 이상 필요하면 쉼표로 구분해서 작성

for (int i = 0, j = 10; i < j; i++,j--) {
    ... // 본체
}

분기문

  • 무조건 다른 경로로 이동함. 현재 반복문을 종료하거나, 현재 반복을 마칠때 주로 사용, 흐름이 복잡해지므로, 꼭 필요할 때만 사용.

  • break 문

    • 반복문이나 switch문의 본체를 벗어나려고 주로 사용함
  • continue 문

    • 반복문에서만 사용되며, 현재 반복은 건너뛴채 나머지 반복만 계속 실행함
  • switch 문

    • 콜론 레이블을 쓰는 기존 switch문
switch (변수) {
    case 상수1 : 0개 이상의 실행문
    ...
    default : 0개 이상의 실행문 
}

이때 case에 걸리면, 그 때부터는 break없는 한 아래에 있는 실행문은 모두 실행한다고 보면 됨.

  • 개선된 switch문

    • 화살표 case 레이블 : 일치하는 case 레이블의 실행문만 수행하고, 다음 case레이블로 이동하지 않는다.
  • switch 연산식

    • 값을 반환할 수 있는 연산식으로 사용할 수 있다.
  • 다중 case 레이블

    • 콤마로 연결된 다수의 상수를 case레이블로 사용할 수 있다.
  • yield 예약어

    • yield는 값을 반환하면서 switch 연신식을 종료하므로 yield 문 뒤에 break문이 필요없다.
package chap03;

public class Switch4Demo {
    public static void main(String[] args) {
        whoIsIt("호랑이");
        whoIsIt("참새");
        whoIsIt("고등어");
        whoIsIt("곰팡이");
    }

    static void whoIsIt(String bio) {
        String kind = switch (bio) {
        case "호랑이", "사자" -> "포유류";
        case "독수리", "참새" -> "조류";
        case "고등어", "연어" -> "어류";

        default -> {
            System.out.print("어이쿠! ");
            yield "...";
        }
        };
        System.out.printf("%s는 %s이다.\n", bio, kind);
    }
}

메서드

  • 장점 : 중복코드 줄이고 코드 재사용 가능
  • 코드를 모듈화해 가독성도 높아짐
  • 메서드 오버로딩
    • 메서드 시그너처(Method Signature) : 메서드 이름, 매개변수의 개수, 매개변수의 타입과 순서를 의미
    • 메서드 이름은 같지만 메서드 시그니처가 다른 메서드를 정의하는 것을 메서드 오버로딩(Method Overloading)이라고 한다.

'TIL > [객체지향 프로그래밍] TIL' 카테고리의 다른 글

TIL (22.04.28)  (0) 2022.04.29
TIL (22.04.19) 시험범위 4장 정리  (0) 2022.04.20
TIL (22.04.14)  (0) 2022.04.17
TIL (22.04.16) 시험범위 정리 2장  (0) 2022.04.16
TIL (22.04.16) 시험 범위 정리 1장  (0) 2022.04.16