본문 바로가기
개발언어/Java : 자바

자바 쉽게 배우기 4 - 조건문과 반복문

by 개발자D 2023. 1. 3.

조건문과 반복문

프로그래밍의 핵심 조건문과 반복문에 대해 살펴봅시다. 조건문과 반복문은 프로그램의 흐름을 제어하는 제어문입니다. 조건문에는 if, switch문이 있고, 반복문에는 for, while, do-while문이 있습니다. 각 제어문의 형식과 실행 흐름에 대해 살펴보겠습니다.

 

블록은 중괄호({})로 묶이는 하나의 단위입니다. 여러 문장을 한 단위로 묶는 역할을 합니다.

조건문

if 문 : 조건식이 참일 때 수행하고 싶다면

  1. 조건식을 계산합니다.
  2. 조건식이 참일 때 if 블록 {} 안의 문장들을 수행합니다.
  3. 조건식이 참이 아닐 때 위에서부터 순차적으로 다음 else if 조건식이 참이 되는지 확인합니다.
  4. 참이 되는 조건식의 블록 {} 안의 문장들을 수행합니다.
  5. 어떤 조건식도 만족시키지 않을 때 else 블록 {} 안의 문장들을 수행합니다.
if ( 조건식 ) {

	// 조건식이 참(true)일 때 수행될 문장들
    
} else if ( 조건식 2 ) {

	// 조건식2가 참(true)일 때 수행될 문장들
    
} else if ( 조건식 3 ) {

	// else if는 여러개 사용가능
    
} else { 

	// 위의 어떤 조건식도 만족시키지 않을 때 수행될 문장들
    
}

 

  • else if와 else는 생략할 수 있습니다.

중첩 if 문

if문 안의 if문이 가능하며 중첩의 횟수에는 제한이 없습니다.

CLEAN CODE :
가독성이 좋은 코드를 작성하기 위해서는 여러 번 중첩되는 코드를 작성하지 않습니다.

switch 문  : 조건식이 특정 값일 때 수행하고 싶다면

  1. 조건식을 계산합니다.
  2. 조건식의 결괏값과 일치하는 case문으로 이동합니다.
  3. 이후의 문장들을 수행합니다.
  4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나갑니다.
switch ( 조건식 ) {
    case 값1 :
    
        // 조건식의 결과가 값1과 같을 때 수행될 문장들
                    break;
                    
    case 값2 :
    
     	// 조건식의 결과가 값2과 같을 때 수행될 문장들
                    break;
                    
    default :
    
        // 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
}

 

  • 수행할 문장이 같은 경우 case를 붙여 써도 됩니다.
  • 예시 ) case 값 1 : case 값 2 : case 값 3:
  • break를 생략할 경우 switch문 블록의 끝을 만날 때까지 나오는 모든 문장들을 수행합니다.
  • default문은 생략할 수 있습니다.
  • switch문의 조건식 결과와 case문의 값은 정수 또는 문자열(jdk 1.7부터 허용)이어야 합니다.

중첩 switch문

if문과 마찬가지로 switch문 안의 switch문이 가능하며 중첩의 횟수에는 제한이 없습니다.

 

향상된 switch문

switch ( 조건식 ) {
    case 값1 -> {
    
    	// 조건식의 결과가 값1과 같을 때 수행될 문장들
        
    }
    
    case 값2 -> {
    
     	// 조건식의 결과가 값2과 같을 때 수행될 문장들
    
    }
                    
    default -> {
    
        // 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들

    }
}

Java 14 버전부터 사용할 수 있는 문법입니다.

  • 수행할 문장이 같은 경우 case를 콤마로 구분하여 붙여 씁니다.
  • 예시 ) case 값 1, 값 2 , 값 3 ->
  • break를 생략해도 블록 {} 안의 코드만 실행됩니다.
  • 수행될 문장이 한 줄이라면 중괄호 {}를 생략할 수 있습니다.
  • 값을 반환하려면 yield 키워드를 사용하거나 → 이후에 바로 반환값을 써주시면 됩니다.

 

반복문

for 문 : 반복 횟수를 알고 있을 때

for(1. 초기화; 2. 조건식; 4. 증감식) {
	3. 조건식이 참일 때 수행될 문장들
}

 

  • 실행 순서 : 1 > 2 > (조건식이 참일 경우 > 3 > 4 > 2 반복, 거짓일 경우 for문 밖으로 나옴)

  • 초기화 : 반복문에 사용될 변수를 초기화합니다. 둘 이상의 변수가 필요할 때는 아래와 같이 ‘,’를 사용하여 초기화를 나열합니다. 같은 타입의 변수가 아니면 사용할 수 없습니다.
    int i = 1, j = 0;
  • 조건식 : 조건식이 참이면 ( > 3 > 4 > 2 )를 반복하고 거짓이면 for문 밖으로 나옵니다. 조건식은 일반적으로 증감식에 의해 false가 됩니다. 
  • 증감식 : 반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식입니다. 초기화처럼 ‘,’를 사용해 둘 이상의 식을 연결해 쓸 수 있습니다.

  • 세 가지 요소 모두 필요하지 않으면 생략할 수 있습니다. 모두 생략할 경우 (;;)로 표기하며 true로 인식되어 무한 반복문이 됩니다.

 

중첩 for문

for문 안의 for문이 가능하며 중첩의 횟수에는 제한이 없습니다.

 

향상된 for문

for ( 타입 변수명 : 배열 또는 컬렉션) {

	//반복할 문장

}

JDK1.5부터 사용할 수 있는 문법입니다.

배열과 컬렉션은 여러 값을 묶음으로 다룹니다. 이어지는 글에서 더 자세히 다루겠습니다. 향상된 for문은 배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장됩니다.

 

시간 지연 for문

for(int j = 0; j < 2_000_000_000; j++;)

아무 일도 하지 않는 빈 문장을 반복하는 for문으로 시간을 지연시킬 수 있습니다.

while : 조건에 따라 반복할 때

while ( 1. 조건식 ) {
	2. 조건식이 참인 동안 반복될 문장둘
}

 

  • 실행 순서 : 1 > (참일 경우 > 2 > 1 반복, 거짓일 경우 while문 밖으로 나옴)
  • while문의 조건식은 생략이 불가능합니다.
  • for문에 ;;를 넣는 것처럼 조건식에 true를 넣어 무한 반복문을 만들 수 있습니다.

do-while : 무조건 한 번은 실행하고 조건을 검사하고 싶을 때

do {

	// 조건식이 참일 때 수행될 문장들
    
} while (조건식);

 

  • while문과 달리 블록{} 안 문장을 먼저 수행하고 조건식을 검사합니다. 따라서 최소한 한 번은 무조건 블록{} 안 문장들이 수행됩니다.
  • 조건식 옆에 세미콜론 (;)을 잊지 않도록 주의합시다.

 


break

break문은 자신이 포함된 가장 가까운 반복문을 벗어나게 합니다. 주로 If 문과 함께 사용되어 특정 조건을 만족하면 반복문을 빠져나가도록 합니다.

continue

continue문을 만나면 반복문의 끝으로 이동하여 자신이 포함된 반복문의 다음 반복으로 넘어갑니다. for문의 경우 증감식으로 이동하며 while문과 do-while문의 경우 조건식으로 이동합니다. break문처럼 If문을 함께 사용하여 특정 조건을 만족하면 다음 반복으로 넘어가도록 합니다.

반복문 이름 붙이기

앞서 설명드린 break와 continue를 사용하면 자신이 포함된 반복문에서 빠져나가거나 다음반복으로 넘어갈 수 있었습니다. 하지만 중첩 반복문을 사용할 때 자신이 포함된 반복문이 아닌, 그 반복문을 감싸는 바깥의 반복문을 빠져나가게 할 순 없을까요?

중첩 반복문 앞에 (이름 :) 형식으로 이름을 붙이고 break문과 continue문에 이름을 지정해 줌으로써 ( break 반복문이름, continue 반복문이름) 특정한 반복문을 벗어나거나 반복문의 끝으로 이동하게 할 수 있습니다.

LOOP1 : for (int i = 0; i < 10; i++) {
	LOOP2 : for (int j = 0; j < 10; j++) {
    	if ( j == 7 )
    	break LOOP1;
   }
}

// LOOP2이 아닌 LOOP2 반복문을 빠져나갑니다.

프로그래밍에서 가장 기본이 되는 조건문과 반복문에 대해 배웠습니다. 기본 중의 기본인 만큼 탄탄하게 이해하고 넘어가는 것이 좋습니다. 다음글은 배열에 대해 다룹니다. 배열은 값들의 집합이라고 할 수 있습니다. 값이 많을 때 배열을 사용해서 효율적으로 관리할 수 있습니다. 

 

자바 쉽게 배우기 5 - 배열

배열 Array 배열 배열은 같은 타입의 여러 데이터를 하나로 묶어 보관하는 구조입니다. 데이터들은 Index라는 번호를 통해 구분됩니다. 배열은 자바 쉽게 배우기 2 - 변수에서 설명한 참조 타입에

devdharu.tistory.com