Java/Java의 정석

Chapter 04 - 조건문과 반복문

vividswan 2022. 4. 15. 23:18

Chapter 04 - 조건문과 반복문

  • 조건문과 반복문에 따라 순차적으로만 진행되던 코드의 흐름을 바꿀 수 있다.
  • 조건문은 조건에 따라 다른 문장 수행
  • 반복문은 특정 문장들을 반복해서 수행

1.1 조건문 - if, switch

  • 조건문은 조건식과 문장을 포함하는 블럭으로 구성

1.1 if문

  • if문은 가장 기본적인 조건문
  • 조건식과 괄호로 이루어짐
  • 조건식이 참일 시 괄호 안의 문장을 수행

조건식

  • 조건식은 일반적으로 비교연산자와 논리연산자로 구성
  • 등가비교 연산자와 대입 연산자를 헷갈리지 말 것

블럭{}

  • 괄호를 이용해서 여러 문장을 하나의 단위로 묶을 수 있고 이것을 블럭이라고 함
  • 탭으로 들여쓰기를 해서 블럭 안에 속한 문장이라는 것을 쉽게 인지하도록 할 것
  • 한 문장일 시 괄호 생략 가능
    • 가능하면 써 줄 것

1.2 if-else문

  • if문의 문장이 거짓일 시 else문 수행
  • else문도 한 문장일 시 괄호 생략 가능

1.3 if-else if문

  • 처리해야 할 경우의 수가 셋 이상일 시 사용
  • 한 문장에 여러 개의 조건식을 쓸 수 있음
  • 여러 else if문을 사용할 수 있으며 참인 조건식이 하나도 없으면 마지막의 else 블럭 수행
    • else 블럭 생략 가능

1.4 중첩 if문

  • if문의 블랙 내에 또 다른 if문을 포함시키는 것이 가능
  • 중첩의 횟수는 제한이 없음
  • 들여쓰기를 통해 if문의 구분을 확실히 할 것
  • 괄호의 생략에도 주의할 것 -> 괄호를 명시하여 블럭끼리의 관계를 확실히 해줄 것

1.5 switch문

  • switch문은 if문과 달리 단 하나의 조건식으로 많은 경우의 수 처리 가능
  • 조건식을 계산 후 결과와 일치하는 case문으로 이동 후 이후의 문장들을 수행
    • break문이나 switch문의 끝을 만날 때까지 진행
  • 조건과 일치하는 case문이 하나도 없을 시 default문으로 이동

switch문의 제약조건

  • switch문의 조건식 결과는 정수 또는 문자열
  • case문의 값은 정수, 상수만 가능하고 중복 불가능

switch 중첩

  • if문처럼 switch문도 중첩 가능
  • 중첩 switch문에서 break문 빼먹지 않도록 주의

반복문 - for, while, do-while

  • 반복문은 어떤 작업이 반복적으로 수행되도록 할 때 수행

2.1 for문

  • for문은 반복 횟수를 알고 있을 때 적합

for문의 구조와 수행 순서

  for(초기화;조건식;증감식){
    // 조건식이 참일 때 수행될 문장들
  }
  • 초기화 수행 후 조건식 -> 수행될 문장 -> 증감식의 순서

초기화

  • 반복문에 사용될 변수를 초기화
  • 처음에 한 번만 수행
  • 콤마를 구분자로 변수로 두고 여러 변수를 선언 가능

조건식

  • 조건식의 값이 true이면 반복, 거짓이면 반복 중단 후 for문을 벗어남

증감식

  • 반복문을 제어하는 변수의 값을 증가 또는 감소
  • 매 반복마다 변수의 값이 증감식에 의해 변함
  • 다양한 연산자로 증감식 작성 가능
  • 콤마를 이용해서 두 문장 이상을 하나로 연결 가능

중첩 for문

  • for문 안에 또 다른 for문 포함 가능

2.2 while문

  • 블럭만으로 이루어져 있으며 조건식이 참일 동안 블럭내의 문장을 반복

for문과 while문의 비교

  • 항상 서로 변환이 가능
  • while문 보다 for문이 더 간결하고 알아보기 쉬움
  • 초기화나 증감식이 필요하지 않을 땐 while문이 더 적합

while문의 조건식은 생략 불가

  • for문과 달리 생략할 수 없음
  • 항상 참이 되도록 하기 위해선 반드시 true를 넣어야 함
    • 무한 반복문을 벗어날 수 있도록 조건식 반드시 넣기

2.3 do-while문

  • while문의 변형
    • 조건식과 블럭의 순서를 바꿔놓음
  • while문은 조건식의 결과에 따라 블럭이 한 번도 수행되지 않을 수 있지만 do-while문은 최소한 한 번은 수행될 것을 보장

2.4 break문

  • break문은 자신이 포함된 가장 가까운 반복문을 벗어남
  • if문과 함께 사용하여 특정 조건을 만족하면 반복문을 벗어나도록 함

2.5 continue문

  • 반복문 내에서만 사용 가능
  • continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어감
  • 반복문 전체를 벗어나지 않고 다음 반복을 수행한다는 점이 break와 다름

2.6 이름 붙은 반복문

  • break문은 근접한 단 하나의 반복문만 벗어날 수 있는 단점
  • 이러한 단점을 극복하기 위해 중첩 반복문 앞에 이름을 붙이고 break문과 continue문에 이름을 지정해 줌
    • 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있음
  • ex) for문 앞에 loop1 : <- 이런 식으로 이름을 정해준 뒤 break loo1;과 같은 방식으로 벗어남