본문 바로가기

Server Programming/BackEnd Project

15일차 - 자바 (4) 제어문 (+ repeat(i))

반응형

  • 제어문 키워드
    • 조건문 : if, switch
    • 반복 제어문(loop문) : for, while, do-while
    • 제어 키워드(jump문) : break, continue

조건문

1. if문

  • boolean타입을 리턴하는 조건문
  • Optional : 실행할 구문이 한 줄만 존재할 경우 '{}' 생략 가능
  • if문 안에 또 다른 if문을 중첩해서 사용 가능
  • 비즈니스 코드의 경우엔 if문이 상당히 많이 반복되므로, 테스트 커버리지는 60~70만 통과해도 성공적인 테스트가 된다.
    1. if (식){
      실행 구문;
      }
    2. if (식){
      실행구문;//조이true일실행
      }
      else{
      실행 구문; // 조false이면 실행
      }
    3. if (조건식1){
      실행 구문; // 조건식1이 true일 때 실행
      } else if(조건식2) {
      실행 구문; // 조건식2가 true이면 실행
      } else if(조건식n) {
      실행 구문; // 조건식n이 true이면 실행
      }else{
      실행 구문; // 조건식들이 모두 false이면 실행
      }
    4. if (조건식1){
      실행 구문; // 조건식1이 true일 때 실행
      if (조건식2) {
      실행 구문; // 조건식2가 true이면 실행
      }else{
      실행 구문; // 조건식2가 false이면 실행
      }
      }else{
      실행구문;//조건식1이 false이면실행
      }
package ch04;

/**
 * if-else 문
 */
public class IfElseEx1 {
    public static void main(String args[]) {

        boolean isComplete = true;
        if(isComplete) System.out.println("완료되었습니다");

        int i = 20;
        if( i < 10 ){
            System.out.println("if 조건이 true여서 if 블럭 실행 : i가 10보다 작습니다");
        } else {
            System.out.println("if 조건이 false로 else 블럭 실행 : i가 10보다 큽니다");
        }

        int year = 2022;
        int month = 12;
        if( ( (year == 2022) && (month >= 1) ) && ( (year == 2022) && (month <= 11) ) ) {
            System.out.println("2022년 12월 이전이다");
        }else{
            System.out.println("2022년 12월이다");
        }
    }
}
if( (year == 2022) && (month >= 1) ) && ( (year == 2022) && (month <= 11) ) // 조건문 

//-> 내부 클래스에서만 쓰는 boolean을 반환타입으로 하는 메서드로 작성해서 유지보수성을 높이도록 한다.

 

 

2. switch문

  • 값에 따라 분류를 할 경우에 사용하는 조건문
  • 특정변수를 반복적으로 비교할 때, if-else if문 대신 사용해 가독성을 높일 수 있다.
  • if문과 달리 조건이 많아도 실행 속도에 영향이 없다.
  • case문의 변수엔 정수 자료형의 기본형, 열거형, 문자열 타입을 지원한다.
    • 열거형은 타입과 값을 모두 체크하기 때문에 switch문과 사용하기가 좋다.



     
  • 'case : 값' 으로 조건을 체크하고, 일반적으로 케이스마다 break;를 통해 다음 case문을 실행하지 않도록 한다.
  • 'break' : switch문 뿐만 아니라 반복문을 강제로 빠져나오게 한다.
  • 'default :' : if문의 else를 의미하는 조건에 맞는 case문이 존재하지 않을 때 실행하는 기본값이다.

 

  • 중첩 switch문

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package ch04;

import java.util.Scanner;

/**
 * switch 문 예제
 */
public class SwitchEx2 {
    public static void main(String args[]) {

        // 콘솔창에서 값을 입력 받을 수 있도록 java.util.Scanner 객체를 생성
        Scanner scanner = new Scanner(System.in);
        System.out.print("당신의 점수를 입력하세요: ");
        int i = scanner.nextInt(); // 입력한 점수를 int정수로 얻는다

        String grade = "";
        switch (i / 10) { // 점수를 10으로 나눈 값으로 체크
            case 10: // 값이 10 or 9이면 A
            case 9:
                grade = "A";
                break; // break문을 만나면 switch 블럭 종료
            case 8:
                grade = "B";
                break;
            case 7:
                grade = "C";
                break;
            case 6:
                grade = "D";
                break;
            default: // 이외에는 F
                grade = "F";
                break;
        }
        System.out.println(grade + "학점 입니다");
    }

}

-> break; 문이 존재하지 않으면 같은 실행 조건의 case문으로 동작

 

 

 


반복문

1. for문

  • 초기화는 for문당 한번만 실행된다.
  • 초기화와 증감식에 여러 항목 삽입가능
  • 조건식이 빈 경우엔 무한 루프로 동작
  • break : for문을 강제로 빠져나간다.
  • continue : 실행 순서를 for문의 '}'로 이동한다.
    -> 다음 조건으로 넘어간다.


  • 변수를 두 개 이상 사용할 경우, ','를 구분자로 변수를 초기화한다.

 

 

 

 

 

 

  • 중첩 for 문
















 

package ch04;

/**
 * 중첩 for 문 - 구구단 예제
 */
public class NestedForGugudan {
    public static void main(String args[]) {

        // 구구단 가로 출력
        for(int i=2; i<=9; i++) {
            for(int j=1; j<10; j++) {
                System.out.print(i + " X " + j + " = " + (i*j) +"\t");
            }
            System.out.println();
        }

        for(int i = 2; i <=9 ; i++)
            System.out.print("[" + i + "단]\t\t");
        System.out.println();

        // 구구단 세로 출력
        for(int i = 1; i <=9 ; i++) {
            for (int j = 2; j<=9 ; j++) {
                System.out.print(j+" X "+i+" = "+ (i*j) + "\t");
//                System.out.printf("%d X %d = %2d\t", j, i, j*i);

            }
            System.out.println();
        }

    }
}

 

 

  • For-each문 (향상된 loop문)
    • 순차적으로 값을 꺼낼 경우 반복처리하는 for문
    • 원하는 요소로 이동해 처리 불가
    • for (데이터타입변수명:배열또는콜렉션)
      {
      실행구문;
      }

2. while문

  • 조건이 true이면 항상 실행하는 반복문
  • 데몬 서버 : 받은 모든 요청을 핸들러로 전달하는 역할
  • 서버의 인기가 Apache -> nginx로 이동




  • 중첩 while문

 











 

 

3. do-while문

  • 조건과 상관없이 한번은 실행되고 이후에 조건문이 true면 반복하는 반복문
  • while, for loop문은 zero/many iterative loop, do~while은 one/many iterative loop

 

package ch04;

/**
 * 중첩 while 문
 */
public class NestedWhileEx {
    public static void main(String args[]) {
        int colLength = 3;
        int rowLength = 10;
        int colCount = 0;
        int rowCount;
        while(colCount < colLength) {
            rowCount = 0;
            while(rowCount < rowLength) {
                System.out.print("*");
                rowCount++;
            }
            System.out.println();
            colCount++;
        }
    }
}
package ch04;

public class DoWhileEx {
    public static void main(String args[]) {
        int num = 0;
        // do 코드블록은 무조건 한 번은 실행된다
        do {
            System.out.print(num + " ");
            num++;
        } while( num < 3);

    }
}

 


제어 키워드

1. continue

  • 반복문의 시작점으로 이동하는 키워드
  • 반복문을 벗어나지 않는 키워드















2. break

  • 반복문 수행 중 강제로 종료시켜서 반복문을 빠져 나오는 키워드

 

 

 

 

 

 

 

 

 

3. 반복문을 구분해 제어하기 위한 라벨

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;
            }
        }
    }
}

 


소프트 스킬 -> 압박 면접 : 대처 능력과 협업 능력 파악 -> 단답형으로 대답하는 것보다, 서술형으로 어떤 방식으로 접근해서 어떤 방식으로 해결했고 답하는 게 낫다.

 

기업에서는 리더도 선호하지만, 중재자 역할을 선호, 조장이 아니어도 한사람씩 챙기는 역할을 잘하기 때문에 도움을 주는 퍼실레이터

 

하드 스킬 = 기술의존적 -> 중요하지 않다.

반응형

'Server Programming > BackEnd Project' 카테고리의 다른 글

16일차 - TIL  (0) 2022.12.27
15일차 - TIL  (0) 2022.12.26
14일차 - TIL  (0) 2022.12.26
13일차 - TIL  (0) 2022.12.25
13일차 - 자바를 통해 요구사항 구현하기  (1) 2022.12.23