제어문

김상훈·2024년 3월 13일

Java

목록 보기
10/22

제어문이란

Java에서 코드는 위에서 아래 순으로 읽고 실행됨

모든 일을 순차적으로 실행할 수 있다면 아무런 상관이 없겠지만, 어떤 코드는 반복해야 될 수도 있고 어떤 코드는 건너뛰는 등의 순서를 변경해야 되는 일이 발생함

이 때, 제어문을 사용하여 코드 실행 흐름을 제어할 수 있음

제어문의 종류

  • 선택문
    • if-then
    • if-then-else
    • switch
  • 반복문
    • for
    • while
    • do-while
  • 분기문
    • break
    • continue
    • return

선택문

if-then

  • 지정한 조건이 만족할 시에 지정한 블록 안에 있는 코드가 실행
if (<조건식>) {
  <조건이 참일 경우 실행되는 코드>;  //코드가 한 줄일 경우 {} 생략가능
}

if-then-else

  • 조건식이 참일 경우와 거짓일 경우의 실행되는 코드를 나눌 수 있음
if (<조건식>) {
  <조건이 참일 경우 실행되는 코드>;
} else {
  <조건이 거짓일 경우 실행되는 코드>;
}

else if를 사용하여 조건을 추가할 수 있음

if (<조건식>) {
  <조건이 참일 경우 실행되는 코드>;
} else if (<다른 조건식>) {
  <다른 조건이 참일 경우 실행되는 코드>;
} else {
  <위 조건들이 거짓일 경우 실행되는 코드>;
}

switch

  • 변수를 평가하고 이를 분기할 수 있음
  • 평가 당하는 변수는 원시타입 일 수도 있고 Enum형, String, Wrapper 등의 클래스도 가능함
switch (<변수>) {
  case <1> :
    <변수가 값1에 해당하는 경우 실행되는 코드>;
    break;
  case <2> :
     <변수가 값2에 해당하는 경우 실행되는 코드>;
    break;
  default :
    <변수가 어떠한 값에도 해당하지 않는 경우 실행되는 코드>;
    break;
}

반복문

for

  • 설정한 조건이 만족될 때까지 블록이 계속해서 수행
  • 카운팅을 할 수도 있지만, Array 혹은 Collection 안에 저장되어 있는 값을 순회할 때 많이 사용
for (<초기식>; <조건식>; <증감식>) {
  <반복될 코드>;
}
int sum = 0;
for (int i=1; i<=10; i++) {
  sum += i
}
System.out.println(sum};  //55(1~9까지의 합)

foreach(개선된 for문)

int[] numbers = {1,2,3,4,5};
for (int number : numbers) {
  System.out.println(number);  //1 2 3 4 5출력
}

while

  • 특정 조건이 참일 경우에 계속해서 해당 코드들이 실행
  • 조건이 거짓일 경우 루프 탈출
while (<조건식>) {
  <조건이 참일 경우 반복되는 코드>;
}

do-while

  • while과 다르게 코드블록을 수행하고 조건을 판별
do {
  <조건이 참일 경우 반복되는 코드>;
} while (<조건식>);

분기문

조건문에서 개발자의 의도로 중간 흐름을 바꿀 수 있는 구문

break

  • switch문, 반복문에서 사용
  • 해당 구문을 만났을 때 가장 가까운 조건문 종료
for (int i=0; i<=10; i++) {
  if (i==5) break;
  System.out.println(i);  //1 2 3 4출력(5에서 탈출)
int findNumber = 10;
label;
for (int i=0; i<arr.length; i++) { 
  for (int j=0; j<arr[i].length; j++) { 
    if (arr[i][j] == findNumber) { 
    	break label;  //arr에서 뽑아낸 값이 10인 경우 두 개의 for문 모두 탈출
  	}
  } 
}

continue

  • 반복문 안에서 사용
  • 조건이 해당할 경우에만 반복문 건너뜀
for (int i=0; i<=10; i++) {
  if (i==5) continue;
  System.out.println(i);  //1 2 3 4 6 7 8 9 10출력(5에서 skip)
int findNumber = 10;
label;
for (int i=0; i<arr.length; i++) { 
  for (int j=0; j<arr[i].length; j++) { 
    if (arr[i][j] == findNumber) { 
    	continue label;  //arr에서 뽑아낸 값이 10인 경우 두 개의 for문 모두 탈출
  	}
  } 
}

return

  • 현재 메서드를 종료시키고 해당 메서드를 호출한 위치로 돌아감
  • 메서드 타입에 의해 뒤에 값이 올 수도 있고 안 올 수도 있음
int getAge(String name) { 
	if (name == "김상훈") return 28; 
	System.out.println("존재하지 않는 사람입니다"); 
	return -1; 
}
void printAge(String name) { 
	if (name == "김상훈") { 
    	System.out.println("28"); 
    	return; 
	} 
	System.out.println("존재하지 않는 사람입니다"); 
	return; 
}

0개의 댓글