Kotlin/Grammar

[Kotlin] Control Flows

annovation 2025. 3. 8. 10:02

Control Flows

1️⃣ if-else

 

☕️ Java

public class Main {
    public static void main(String[] args) {
        int number = 15;

        if (number % 2 == 0) {
            System.out.println("Even Number");
        } else {
            System.out.println("Odd Number");
        }
    }
}

 

🔷 Kotlin

fun main() {
    val number = 15

    // if-else를 표현식으로 사용 가능
    val result = if (number % 2 == 0) "Even Number" else "Odd Number"
    
    // 사칙연산도 가능
    val number = (if (true) 10 else 20) + 20
    
    println(result)
    println(number)
}
  • 코틀린에서는 if 문을 표현식(expression)으로 사용할 수 있습니다.
  • 코틀린에는 삼항연산자가 없습니다. 삼항연사자는 값을 반환하는 표현식이 필요할 때 사용하는데, 코틀린 if 문은 이미 표현식 입니다.
  • 표현식(Expression) : 값을 반환하는 코드 (ex. 10 + 5, if (a > b) a else b)
  • 문(Statement) : 값을 반환하지 않고, 동작만 수행하는 코드 (ex. if (a > b) { println(a) }, for (i in 1..10) {})

 

📌 if-else 공식 문서 1

https://play.kotlinlang.org/byExample/02_control_flow/05_Conditional%20expression

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

📌 if-else 공식 문서 2

https://kotlinlang.org/docs/basic-syntax.html#conditional-expressions

 

Basic syntax | Kotlin

 

kotlinlang.org


2️⃣ for

 

☕️ Java

public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("Count: " + i);
        }
    }
}

 

🔷 Kotlin

fun main() {
    for (i in 0 until 5) { // 0부터 4까지 반복
        println("Count: $i")
    }
}
  • 코틀린은 for-in 문법을 제공하며, until 키워드를 사용하여 범위를 지정할 수 있습니다.

📌 for 공식 문서 1

https://play.kotlinlang.org/byExample/02_control_flow/02_Loops

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

📌 for 공식 문서 2

https://kotlinlang.org/docs/basic-syntax.html#for-loop

 

Basic syntax | Kotlin

 

kotlinlang.org


3️⃣ when

 

☕️ Java

Java 14 이후의 switch yield

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

        String result = switch (day) {
            case 1 -> "월요일";
            case 2 -> "화요일";
            case 3 -> {
            	System.out.println("오늘은 수요일입니다.");
                yield "수요일"; // ✅ 값을 반환하는 부분
            }
            default -> "알 수 없음";
        };

        System.out.println(result); // 출력: 수요일
    }
}
  • switch가 표현식(Expression)으로 사용 가능 → 결과를 String으로 바로 반환
  • case에서 -> 사용 (간결한 구문)
  • 여러 줄({} 블록)을 사용하는 경우, 값을 반환하려면 yield를 사용해야 한다.
  • break 필요 없음

🔷 Kotlin

fun main() {
    val day = 3

    val dayName = when (day) {
        1 -> "월요일"
        2 -> "화요일"
        3 -> {
        	println("수요일 입니다.")
        	"수요일"
        }
        else -> "알 수 없음"
    }

    println("Day: $dayName")
}

 

  • when 문은 표현식(Expression)으로 사용할 수 있어 값을 바로 할당 가능 (val dayName = when (...))
  • break 필요 없음 → 매칭된 블록 실행 후 자동 종료
  • else가 default 역할을 함 → else 입력 필수
  • when의 결과값(ex. 월요일, 화요일..)의 타입은 통일시켜주는 것이 좋다.

 

📌 when 공식 문서 1

https://play.kotlinlang.org/byExample/02_control_flow/01_When

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

📌 when 공식 문서 2

https://kotlinlang.org/docs/basic-syntax.html#when-expression

 

Basic syntax | Kotlin

 

kotlinlang.org


4️⃣ while

 

☕️ Java

 

🔷 Kotlin

 

📌 while 공식 문서 1

https://play.kotlinlang.org/byExample/02_control_flow/02_Loops

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

📌 while 공식 문서 2

https://kotlinlang.org/docs/basic-syntax.html#while-loop

 

Basic syntax | Kotlin

 

kotlinlang.org


5️⃣ Exeptions : try-catch blocks

 

☕️ Java

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

public class Main {
    public static void main(String[] args) {
        try {
            copy("a.txt", "a_copy.txt");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void copy(String source, String target) throws IOException {
        Files.copy(new File(source).toPath(), new File(target).toPath(), StandardCopyOption.REPLACE_EXISTING);
    }
}
  • checked exception의 경우 throws를 선언해준다.

🔷 Kotlin

import java.io.File
import java.nio.file.Files
import java.nio.file.StandardCopyOption

fun main() {
    copy("a.txt", "a_copy.txt")
}

fun copy(source: String, target: String) {
    Files.copy(File(source).toPath(), File(target).toPath(), StandardCopyOption.REPLACE_EXISTING)
}
  • 모든 예외가 unchecked exception이므로, 예외 처리가 필수가 아니다.
  • 보통 try-catch는 예외 처리를 위해 사용되지만, 코틀린에서는 try 자체가 값을 반환하는 표현식이 될 수 있다.⤵️
fun main() {
    val result = try {
        10 / 0  // 예외 발생 (0으로 나누기)
    } catch (e: ArithmeticException) {
        println("예외 발생: ${e.message}")
        -1  // 예외 발생 시 -1 반환
    }

    println("결과: $result")  // 예외 발생: / by zero
                              // 결과: -1
}

 

📌 try-catch 공식 문서 

https://kotlinlang.org/docs/exceptions.html#handle-exceptions-using-try-catch-blocks

 

Exceptions | Kotlin

 

kotlinlang.org


출처

2024-2025 프로그래머스 백엔드 데브코스 3기 4회차 수업

반응형

'Kotlin > Grammar' 카테고리의 다른 글

[Kotlin] Null Safety  (0) 2025.03.16
[Kotlin] Collections  (0) 2025.03.15
[Kotlin] Classes and Objects  (0) 2025.03.09
[Kotlin] Functions  (1) 2025.03.06
[Kotlin] Variables  (0) 2025.03.05