BE/Kotlin

[Kotlin] 코틀린 문법 2

baek-dev 2025. 2. 16. 21:11

📌 1. 리스트(List)

✅ Java에서 리스트 사용

import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        System.out.println(list);
    }
}

 

🔹 Java의 특징

ArrayList<>를 명시적으로 선언해야 함.

add() 메서드를 사용해야 함.

 

✅ Kotlin에서 리스트 사용

fun main() {
    val list = listOf("Apple", "Banana", "Cherry")
    println(list)
}

 

🔹 Kotlin의 특징

listOf() 함수를 사용하여 불변 리스트(Immutable List)를 쉽게 생성 가능.

mutableListOf()를 사용하면 변경 가능한 리스트 생성 가능.

val mutableList = mutableListOf("Apple", "Banana")
mutableList.add("Cherry") // 가능

 

📌 2. 맵(Map)

✅ Java에서 맵 사용

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        System.out.println(map.get("Apple"));
    }
}

 

🔹 Java의 특징

HashMap<>을 명시적으로 선언해야 함.

put() 메서드를 사용해야 함.

 

✅ Kotlin에서 맵 사용

fun main() {
    val map = mapOf("Apple" to 1, "Banana" to 2, "Cherry" to 3)
    println(map["Apple"]) // 1
}

 

🔹 Kotlin의 특징

mapOf()를 사용하여 불변 맵(Immutable Map) 생성 가능.

to 연산자를 사용하여 키-값을 쉽게 추가 가능.

변경이 필요한 경우 mutableMapOf()를 사용.

val mutableMap = mutableMapOf("Apple" to 1)
mutableMap["Banana"] = 2 // 변경 가능

 

📌 3. 람다 표현식(Lambda Expression)

✅ Java에서 람다 사용 (Java 8 이상)

import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
        list.forEach(s -> System.out.println(s));
    }
}

 

🔹 Java의 특징

람다식은 -> 기호를 사용하여 표현.

forEach()와 같은 고차 함수 사용 가능.

 

✅ Kotlin에서 람다 사용

fun main() {
    val list = listOf("Apple", "Banana", "Cherry")
    list.forEach { println(it) }
}

 

🔹 Kotlin의 특징

{} 블록을 사용하여 더 간결하게 표현 가능.

it 키워드를 사용하여 단일 매개변수 생략 가능.

매개변수가 여러 개라면 명시적으로 선언 가능.

list.forEach { item -> println(item) }

 

📌 4. 기본 매개변수(Default Arguments)

✅ Java에서 기본 매개변수 구현

public class Main {
    public static void main(String[] args) {
        greet("John");
        greet("John", "Hello");
    }

    static void greet(String name) {
        greet(name, "Hi"); // 오버로딩 사용
    }

    static void greet(String name, String greeting) {
        System.out.println(greeting + ", " + name);
    }
}

 

🔹 Java에서는 기본값을 설정할 수 없으므로 메서드 오버로딩을 사용해야 함.

 

✅ Kotlin에서 기본 매개변수 사용

fun greet(name: String, greeting: String = "Hi") {
    println("$greeting, $name")
}

fun main() {
    greet("John")       // Hi, John
    greet("John", "Hello") // Hello, John
}

 

🔹 Kotlin의 특징

기본 매개변수를 사용할 수 있어 메서드 오버로딩이 불필요.

명시적으로 기본값을 지정할 수 있음.

 

📌 5. 객체 싱글톤(Singleton)

✅ Java에서 싱글톤 구현

public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

 

🔹 Java의 특징

싱글톤 패턴을 직접 구현해야 함.

getInstance()를 호출해야 객체를 가져올 수 있음.

 

✅ Kotlin에서 싱글톤 사용

object Singleton {
    fun show() = println("Singleton Instance")
}

fun main() {
    Singleton.show() // Singleton Instance
}

 

🔹 Kotlin의 특징

object 키워드를 사용하여 간단하게 싱글톤을 생성 가능.

getInstance() 없이 바로 사용 가능.

 

📌 6. 문자열 템플릿(String Template)

✅ Java에서 문자열 연결

public class Main {
    public static void main(String[] args) {
        String name = "John";
        String greeting = "Hello, " + name + "!";
        System.out.println(greeting);
    }
}

 

🔹 Java의 특징

문자열을 연결할 때 + 연산자를 사용해야 함.

 

✅ Kotlin에서 문자열 템플릿 사용

fun main() {
    val name = "John"
    val greeting = "Hello, $name!"
    println(greeting)
}

 

🔹 Kotlin의 특징

$변수명을 사용하여 간결한 문자열 삽입 가능.

복잡한 표현식은 ${}로 감쌀 수 있음.

val age = 30
println("Age next year: ${age + 1}") // Age next year: 31

 

📌 7. 예외 처리(Exception Handling)

✅ Java에서 예외 처리

public class Main {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println(result);
        } catch (ArithmeticException e) {
            System.out.println("Cannot divide by zero");
        }
    }

    static int divide(int a, int b) {
        return a / b;
    }
}

 

🔹 Java의 특징

try-catch 블록을 사용하여 예외 처리.

 

✅ Kotlin에서 예외 처리

fun main() {
    try {
        val result = divide(10, 0)
        println(result)
    } catch (e: ArithmeticException) {
        println("Cannot divide by zero")
    }
}

fun divide(a: Int, b: Int): Int {
    return a / b
}

 

🔹 Kotlin의 특징

Java와 동일한 try-catch 구조를 사용.

throw를 사용하여 예외 발생 가능.

fun validateAge(age: Int) {
    if (age < 18) throw IllegalArgumentException("Age must be 18 or older")
}

 

🚀 결론

기능 Java Kotlin
리스트 new ArrayList<>() listOf() / mutableListOf()
new HashMap<>() mapOf() / mutableMapOf()
람다 s -> s.length() { it.length }
기본 매개변수 오버로딩 필요 fun greet(name: String = "Hi")
싱글톤 getInstance() 필요 object Singleton
문자열 + 연산 사용 $변수명
예외 처리 try-catch 동일

 

 

 

 

출처 : ChatGPT