자바 스터디 4주차 : 제어문

hwanse·2021년 2월 8일
0

Java

목록 보기
5/14

이 글은 백기선님의 라이브 스터디의 참여 및 학습 내용 정리를 위한 글입니다.




학습 목표

  1. 선택문
  2. 반복문






제어문

제어문이란 프로그램 실행의 흐름을 개발자가 의도하는 방향으로 바꿀 수 있도록 흐름을 제어할 수 있게 해주는 구문

제어문 종류

  • 조건문 : if, switch
  • 반복문 : for, while
  • 분기문 : break, continue, return

조건문

프로그램이 개발자가 의도한 조건에 따라 코드의 실행 흐름을 다르게 제어하는 구문

조건문 종류

  • if
  • if else
  • else if
  • switch

사용법

if(조건식) {	// 해당 조건식의 결과가 true일 경우에만 블럭 안에 내용 실행
  // 조건을 만족할 경우 수행할 코드
}

조건문을 사용한 코드 예시를 보자, 변수를 조건에 만족할 때 문장을 출력하는 코드다

public class IfTest {
	
  public static void main(String[] args) {
    	
    int a = 10;
        
    // if 사용
    if (a % 2 == 0) {
      System.out.println(a + " 는 2의 배수입니다.");	// a는  2의 배수이므로 해당 문장 출력
    }
        
    a = 13;
        
    // if else 사용
    if (a % 2 == 0) {
      System.out.println(a);
    } else {
      System.out.println(a + " 는 2의 배수가 아닙니다."); // 13은 2의 배수가 아니므로 해당 문장 출력
        }
        
    a = 55;
    // else if 사용
    if (a < 0) {
      System.out.println("음수입니다.");
    } else if (a % 2 == 0) {
      System.out.println(a + " 는 2의 배수입니다.");
    } else {
      System.out.println(a + " 는 음수도 2의 배수도 아닙니다."); // 해당 문장 출력
    }
       
  }

}

위 코드는 if 조건절만을 사용해서 구현해봤다. 다음은 switch구문을 사용했다.

public class SwitchTest {
	
    public static void main(String[] args) {
    	int a = 10;
        int b = 2;
        
        char op = '+';
        
        switch(op) {
       	  case '+':
            System.out.println("a + b = " + (a+b));	// 해당 문장 출력
            break;
          case '-':
            System.out.println("a - b = " + (a-b));
          	break;
          case '*':
            System.out.println("a * b = " + (a*b));
          	break;
          case '/':
            System.out.println("a * b = " + (a/b));
          	break;
          default:
            System.out.println("사칙 연산 연산자가 아닙니다.");
            break;
        }
        
    }
    
}

switch문 사용시 참고 사항
1. switch 문의 표현식에서 다음과 같은 차이가 있다

  • JDK 7버전 이하
    • switch문 괄호 표현식 안에 정수 타입 또는 문자형만 허용
  • JDK 8버전 이상
    • Enum, String, Character, Byte, Short, Integer 와 같은 참조 타입을 제한적으로 사용이 가능

2. case 값에는 고유해야한다. 중복된 값이 있을 경우 컴파일 에러 발생

3. 각 case는 break 문이 있어야 switch 블럭을 벗어나 다음 로직으로 건너 뛸 수 있다. 보통 switch문 활용할 경우는 각 case 별로 분기 처리가 목적이기 때문에 다른 case에 대해서 프로그램 흐름이 넘어가는 것을 원치 않는것이 일반적이다. 따라서 개발자가 의도적으로 break를 뺀 것이 아니라면 각 case 별 break문이 걸려있는지 반드시 확인해주자.



반복문

특정 작업이 반복적으로 수행되길 원할때 사용하는 구문

반복문의 종류

  • for
  • 향상된 for문 (Java 5버전 이상부터)
  • while
  • do-while

사용법

// 1. 일반 for문
for (초기식; 종료 조건식; 증감식) {
  // 반복 수행할 코드...
}

// 2. 향상된 for문
for (자료형 변수명 : 배열 or 컬렉션) {
  // 반복 수행할 코드...
}

// 3. while문
while (조건식) {
  // 반복 수행할 코드...
}

// 4. do-while
// do-while은 무조건 먼저 한번 실행하고, 조건식이 true일 경우 반복, false일 경우 벗어남
do {
  // 반복 수행할 코드...
} while (조건식);

다음은 위 반복문들을 사용하는 예시 코드이다.

public class LoopTest {
  public static void main(String[] args) {
    int[] arr = new int[] {1, 2, 3, 4, 5};
    
    // 1. 일반 for문 arr의 length 크기 만큼 반복
    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
    
    // 2. 향상된 for문
    for (int data : arr) {
      System.out.println(data);
    }
    
    int i = 0;
    // 3. while 문
    while (i < arr.length) {
      System.out.println(arr[i]);
      i++;
    }

    int j = 0;
    // 4. do-while 문
    do {
      System.out.println(arr[j]);
      j++;
    } while (j < arr.length);
    
  }
}


과제 사항 추가 예정..



참고

profile
만사가 귀찮은 ISFP가 쓰는 학습 블로그

0개의 댓글