[Java] 04. 조건문과 반복문

JK·2024년 4월 8일
0

[Java]

목록 보기
4/11

코드 실행 흐름 제어

자바 프로그램은 기본적으로 main() 메소드에서 시작하여 위에서부터 아래로 실행하는 흐름을 가진다. 이 실행 흐름을 개발자가 원하는 방향으로 바꾸기 위해 흐름 제어문을 사용한다. 제어문은 조건식과 중괄호 블록으로 구성되고, 조건식의 연산 결과에 따라 블록 내부의 실행 여부가 결정된다.

제어문의 종류

조건문반복문
if문, switch문for문, while문, do-while문

조건문은 제어문 블록의 실행이 완료된 후 정상 흐름으로 돌아가고, 반복문은 제어문 블록의 실행이 완료된 후에도 조건에 따라 다시 제어문 처음으로 돌아가 반복 실행한다. 이를 루핑(looping)이라고 한다.


if 문

if (조건식) {
	실행문;
} else {
	실행문;
}

조건식의 결과에 따라 실행문의 실행 여부가 결정되며, 조건식에는 true 또는 false의 결과값을 가지는 연산식이나 boolean 변수가 올 수 있다. if-else 문의 경우에는 조건식이 true일 경우에는 if 문 블록이, false일 경우에는 else 문 블록이 실행된다.

여러 개의 조건식으로 구성된 if 문에서는 한 개의 조건식에 해당하는 실행문만 실행하기 위해서 else if 문을 사용한다. else if 문은 상위 조건식이 false일 경우에만 평가된다. if 문 내부에 또 다른 if 문이 오는 것도 가능하며, 이를 중첩 if 문이라고 하고 중첩의 단계에는 제한이 없다.

switch 문

switch (변수) {
  case 값1:
    ...;
    break;
  case 값2:
    ...;
    break;
  default:
    ...;
}

변수의 값에 따라 실행문이 결정되기 때문에 같은 기능의 if 문보다 코드가 간결하다. 변수값은 정수 타입, 문자열 타입의 변수를 사용할 수 있고, 변수값에 따라 해당하는 case의 실행문을 실행한다.

변수값과 동일한 값을 갖는 case가 없을 경우 default의 실행문을 실행한다. 이는 생략이 가능하다. 만약 break 문이 없다면 해당하는 case의 실행문을 실행한 뒤, 변수값과 상관없이 다음 case의 실행문이 연달아 실행된다.

자바 버전에 따른 기능

  • 자바 12 : switch 문에서 Expressions(표현식) 사용이 가능하다. break 문을 사용하지 않아도 되고, 화살표와 중괄호를 사용할 수 있다.
switch (변수) {
  case 값1 -> {
    ...;
  }
  case 값2, 값3 -> {
    ...;
  }
  default -> {
    ...;
  }
}
  • 자바 13 : 실행문을 통해 얻어진 값을 바로 변수에 대입할 수 있다. 중괄호를 사용할 경우에는 yield 키워드로 대입할 값을 지정해야 한다. 단, 이 경우에는 default를 생략할 수 없다.
타입 변수 = switch(변수) {
  case 값1 -> 변수값;
  case 값2 -> {
    ...;
    yield 변수값;
  }
  default -> 변수값;
};

for 문

for (초기화식; 조건식; 증감식) {
  실행문;
}

실행문을 정해진 횟수만큼 반복 실행한다. 처음 실행 시 초기화식이 먼저 실행되는데, 이 때 초기화식에서 for문에서만 사용되는 로컬 변수를 선언할 수 있다. 그 다음 조건식을 평가하여 결과값이 true이면 실행문을 실행하고, false이면 for문을 종료한다. 실행문을 실행할 경우, 실행을 마친 후 증감식을 실행하고 다시 조건식을 평가한다.

초기화식은 조건식, 실행문, 증감식에서 사용할 변수를 초기화하는 역할을 하는데, 초기화식 또는 증감식이 둘 이상일 경우에는 쉼표로 구분한다. 이 때 주의할 점은 초기화식에서 부동 소수점을 쓰는 float 타입을 사용해서는 안된다는 것이다. 부동 소수점 방식은 연산과정에서 0.1을 정확히 표현하지 못하기 때문에 실행 결과가 잘못될 수 있다.

while 문

while (조건식) {
  실행문;
}

for 문과 다르게 조건식이 true인 경우, 조건식이 false가 될 때까지 계속해서 반복한다. 따라서 조건식에 true를 사용하면 무한 반복이 가능하고, 이 경우 내부에서 while 문을 빠져나가기 위한 코드가 필요하다.

do-while 문

do {
  실행문;
} while (조건식);

do-while 문을 사용할 경우, 마지막에 반드시 세미콜론(;)을 붙여야 한다. while 문과의 차이점은 while 문은 조건식을 먼저 평가하고 실행문을 실행하지만, do-while 문은 실행문을 우선 실행한 후 조건식을 평가한다. 따라서 조건식의 결과값에 상관없이 실행문이 최소 1번은 반드시 실행된다.

break 문

반복문(for 문, while 문, do-while 문)을 실행 중지하거나, 조건문인 switch문을 종료할 때 사용한다. 반복문이 여러개 중첩되어 있을 경우 가장 가까운 반복문 하나만 종료한다. 만약 바깥쪽 반복문까지 종료시키고 싶다면 바깥쪽 반복문에 이름을 붙이고 'break 이름'을 사용한다.

Label: for (...) {
  for (...) {
      break Label;
  }
}

continue 문

반복문에서만 사용되는 제어문으로, 실행 흐름을 종료하고 조건식으로 다시 이동한다. break 문과의 차이점은 반복문을 아예 종료하는 것이 아니라 해당 흐름에서의 실행을 건너뛰는 것이다.


"한빛 미디어 출판 도서, 이것이 자바다"를 읽고 학습한 내용을 토대로 작성되었습니다.

0개의 댓글