본문 바로가기

Kotlin

1. 코틀린 기초 문법(feat. 자바와의 차이)

자바와는 다른 코틀린의 핵심 문법들을 정리해둔 글입니다.

 

변수 선언

class Example {
    // 변수 선언
    // var는 변수임을 선언
    // mutable = 변수명
    // Int: 타입
    // 1 = 값
    var mutable: Int = 1
    
    // 상수 선언
    // val = 상수임을 선언
    val immutable: String = "hello"
    
    // 타입을 명시하지 않으면 값으로부터 타입을 추론한다
    val typeInference = 1.23 // Double로 추론
}

 

함수 선언

// 함수는 'fun' 키워드를 사용한다
fun funcName(value: Int) { // 파라미터 뒤에 어떤 타입인지 명시한다
    println(value)
}

// 반환 타입이 명시된 함수
fun returnString(value: String): String { // String을 반환하도록 명시되어 있다
    return value
}

 

if 표현식

코틀린은 자바의 삼항 연산자 대신 if로 표현식을 사용합니다.

 

자바의 삼항 연산자:

// 음수인지 여부를 출력하는 함수
void checkNegative(int num) {
    System.out.println(num < 0 ? "음수입니다." : "음수가 아닙니다.");
}

 

코틀린의 if 표현식:

// 음수인지 여부를 출력하는 함수
fun checkNegative(num: Int) {
    println(if (num < 0) "음수입니다." else "음수가 아닙니다.")
}

 

 

when 문

자바의 switch문과 비슷한 역할을 합니다.

 

자바의 switch문

void toKorean(String word) {
    switch (word) {
        case "rock":
            System.out.println("바위");
            break;
        case "paper":
            System.out.println("보");
            break;
        case "scissors":
            System.out.println("가위");
            break;
        default:
            System.out.println("오류");
    }
}

 

코틀린의 when 문:

fun toKorean(word: String) {
    when (word) {
        "rock" -> println("바위")
        "paper" -> println("보")
        "scissors" -> println("가위")
        else -> println("오류")
    }
}
  • when문은 switch문처럼 사용하는 방식 외에도 다양한 방법으로 활용이 가능한 문법입니다.
    추후에 다뤄보도록 하겠습니다.

 

try...catch문

코틀린에서는 변수에 값을 할당할 때 try...catch문을 사용할 수 있습니다.

val number: Int = try {
    Integer.parseInt("123")  // 파싱이 성공하여 123이 number에 할당됨
} catch (e: NumberFormatException) {
    -1
}


val wrongNumber: Int = try {
    Integer.parseInt("ㅋㅋㅋ")  // NumberFormatException 발생하여 catch문으로 넘어감
} catch (e: NumberFormatException) {
    -1  // 최종적으로 number에 -1이 할당됨
}

 

범위 표현식

for문으로 "안녕"을 10번 출력하려고 할 때 자바는 아래와 같이 작성해야 합니다.

for (int i = 0; i < 10; i++) {
    System.out.println("안녕");
}

 

코틀린에서는 숫자 range 문법으로 아래와 같이 간결하게 작성할 수 있습니다.

for (i in 1..10) {
    println("안녕")
}

 

  • 범위 표현식은 처음 값과 마지막 값을 포함합니다.
    • 즉 1..10 은 1, 2, 3, 4, 5, 6, 7, 8, 9, 10입니다.

 

다양한 범위 표현식:

// 1, 3, 5, 7, 9
1..10 step 2

// 10, 8, 6, 4, 2
10 downTo 1 step 2

// 1, 2, 3, 4, 5, 6, 7, 8, 9
1 until 10