Java

[Java]제어문(조건문, 반복문)

patrck_jjh 2025. 3. 23. 16:38

 

조건문 if, switch

 

if문

if (조건식) {
	// 조건식 true일 경우 수행될 코드 작성
}

 

블럭 내의 문장이 하나뿐일 경우 괄호{}를 생략 가능

 

if (score > 80) 
    System.out.println("pass");  //  <- if에 속한 라인
    System.out.println("fail");  //  <- if에 속하지 않은 라인

들여쓰기를 해도 괄호로 묶여있지 않으면 포함되지 않는다 

 

 

if-else문

if (조건식) {
	// 조건식이 true일 때 수행될 코드
} else {
	// 조건식이 false일 때 수행될 코드
}

 

 

 

if-else if문 

if (조건식) {
	// 조건식1이 true일 때 수행될 코드
} else if(조건식2) {
	// 조건식2이 true일 때 수행될 코드
} else if(조건식3) {
    // 조건식3이 true일 때 수행될 코드

} else {
	// 조건식이 false일 때 수행될 코드
}
  • true인 조건식을 만날 때까지 순서대로 진행(앞의 조건식이 false인 조건 유지)
  • 참인 조건식 만나면 해당 블럭의 코드만 수행하고 전체를 빠져나옴
  • else if는 여러개 사용 가능하며 else는 생략 가능 

 

 

 

중첩 if문

if (조건식1) {
	// 조건식이 true일 때 수행될 코드
    
    if (조건식2) {
	// 조건식1, 조건식2 모두 true일 경우
    } else {
        // 조건식1 true, 조건식2 false일 경우
    }
    
} else {
	// 조건식1이 false일 경우
}

 

 

 

switch문

switch (조건식) {
	case 값1 :
    	// 값1의 경우 수행될 코드
    	break;
    case 값2 :
    	// 값2의 경우 수행될 코드
    	break;
    case 값3 :
    	// 값3의 경우 수행될 코드
    	break;
    default :
    	// 일치하는 값이 없을 경우 수행될 코드 
}
  • switch문은 단 하나의 조건식으로 많은 경우의 수 처리 가능
  • 조건식에 해당하는 case문으로 이동 후 break문 만날 때 까지 문장 수행(break문이 없으면 이후의 case 연속적으로 실행)
  • 조건식에 해당하는 case가 없다면 default문으로 이동(default 생략 가능)

 

제약조건

switch문 조건식의 결과값이 반드시 정수 또는 문자열이어야함

case문의 값 역시 정수인 상수여야하고 중복되지 않아야 함(리터럴, 상수, 문자열 상수만 가능)

 

 

개선된 switch문 

Java12~14를 거치며 개선된 switch문이 추가되었다

public class SwitchYieldExample {
    public static void main(String[] args) {
        String day = "Monday";

        int workHours = switch (day) {
            case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" -> {
                System.out.println(day + " is a workday.");
                yield 8;  // 평일 근무 시간
            }
            case "Saturday", "Sunday" -> {
                System.out.println(day + " is a weekend.");
                yield 0;  // 주말은 근무 안 함
            }
            default -> {
                System.out.println("Invalid day.");
                yield -1;  // 잘못된 입력
            }
        };

        System.out.println("Work hours: " + workHours);
    }
}
  • ->을 사용하여 특정 case에 해당되면 특정 값을 return함
  • 블록과 yield를 활용해 더 긴 코드를 작성하고 결과값을 return할 수 있음
  • byte, short, int, char, Enum, String 타입 사용 가능  

 

 


 

 

반복문 

for문

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

 

초기화 -> 조건식 -> 실행문 -> 증감식 순서로 진행

초기화와 증감식은 두 문장 이상 사용가능하며 콤마(,)로 작성  ex) for(int i=1, j=10; i<=100; i++, j--)

초기화, 조건식, 증감식 모두 생략 가능하며 이 경우 조건식을 통해 for문 빠져나올 수 있는 코드 작성 

 

향상된 for문

for( 타입 변수명 : 배열 또는 컬렉션) {
	// 반복될 코드
}

 

while문

 

while(조건식) {
	// 조건식이 true일 경우 반복될 문장
}

 

while문의 조건식은 생략불가이다 

 

 

do-while문 

do {
	// 조건식이 true일 경우 수행될 코드
} while (조건식); <- 세미콜론 붙이기

 while문은 조건에 해당하지 않으면 한번도 실행되지 않을 수 있지만

do에 해당하는 문장은 적어도 한번 실행됨

 

break

자신이 포함된 가장 가까운 반복문을 벗어남 

 

continue 

if문과 사용되어 특정 조건에 해당되면 이후 문장을 뛰어넘고 다음 반복문으로 넘어감 

 

 

 

 

 

'Java' 카테고리의 다른 글

[Java]객체지향 프로그래밍 I  (0) 2025.04.06
[Java]배열(array)  (0) 2025.03.25
[Java]연산자(operator)  (0) 2025.03.23
[Java]변수(variable)  (0) 2025.03.20
[Java]컴파일, 경로설정, 메모리 영역  (0) 2025.03.19