Kotlin 기초 정리 함수, 변수, 조건문, 리스트

seoyoon jungseoyoon jung
3 min read

같은 팀 한 분이 가볍게 보기 좋다고 추천해주셔서 시작한 Kotlin 공부.
강의 들으면서 정리한 내용을 가볍게 공유합니다.

시청한 강의는 이 링크입니다.

1. 함수 정의하기

Kotlin에서 함수는 fun 키워드로 정의합니다. 반환값이 없는 경우엔 Unit을 명시하거나 생략할 수 있습니다.

fun helloWorld() {
    println("Hello, World!")
}

Unit은 Java의 void와 유사한 개념입니다. 명시적으로 작성하면 아래와 같습니다.

fun helloWorld(): Unit {
    println("Hello, World!")
}

반환값이 없는 경우 : Unit은 생략해도 됩니다.

파라미터가 있는 함수는 변수명 먼저, 타입이 뒤에 옵니다.

fun add(a: Int, b: Int): Int {
    return a + b
}

return이 존재하면 반드시 반환 타입을 명시해야 합니다.


2. val vs var

  • val: 변경 불가능한 값 (value)

  • var: 변경 가능한 값 (variable)

kotlin복사편집fun hi() {
    val a: Int = 10
    var b: Int = 9

    a = 100 // 오류! val은 재할당 불가
    b = 100 // 가능
}

Kotlin은 타입 추론을 지원하므로, 타입 생략도 가능합니다.

val c = 100 // Int로 자동 추론
var name = "seoyoon" // String으로 추론

다만 선언만 하고 값을 나중에 할당하려면 타입이 반드시 필요합니다.

var e // 오류!
var e: String

3. 문자열 템플릿

Kotlin에서는 문자열 안에 변수나 표현식을 쉽게 삽입할 수 있습니다.

val name = "seoyoon"
println("My name is $name") // -> My name is seoyoon

변수 바로 뒤에 문자가 이어질 경우는 어디까지 변수인지를 알려주기 위해 {}로 감싸줘야 합니다.

println("My name is ${name}I am 30") // name과 I 사이에 공백이 없으므로 중괄호 필요

변수 + 변수 조합도 가능합니다.

val lastName = "jung"
val firstName = "seoyoon"
println("My name is ${firstName + lastName}")

특수문자 $를 문자열로 출력하고 싶을 때는 \를 사용합니다.

println("This is \$a") // -> This is $a

4. 주석

  • 한 줄 주석: //

  • 여러 줄 주석:/***/

/**
 * 여러 줄 주석 예시
 */

5. 조건식 – ifwhen

기본 if문:

fun maxBy(a: Int, b: Int): Int {
    return if (a > b) a else b
}

Kotlin은 삼항 연산자(?:)를 지원하지 않지만, if 자체가 expression(값을 리턴하는 방식)이라 이런 식으로 쓸 수 있습니다.

when 문:

Java의 switch문과 비슷하지만 조금 다릅니다.

fun checkNumber(score: Int) {
    when (score) {
        0 -> println("This is 0")
        1 -> println("This is 1")
        2, 3 -> println("This is 2 or 3")
        else -> println("I don't know")
    }
}

값을 반환하는 when expression도 있습니다.
값을 반환하는 표현식(expression)으로 사용하는 경우에는 else필수입니다.

val result = when(score) {
    1 -> 1
    2 -> 2
    else -> 3 // 반드시 else 필요
}

범위 조건으로도 사용할 수 있습니다.

when(score) {
    in 90..100 -> println("A")
    in 10..80 -> println("B")
    else -> println("C")
}

6. Expression vs Statement

Kotlin의 대부분은 expression 방식으로 값을 반환합니다.

fun maxBy2(a: Int, b: Int) = if (a > b) a else b // Expression

val result = when(score) {// Expression
    1 -> 1
    2 -> 2
    else -> 3
}

Unit을 반환하는 함수도 사실은 expression입니다.
Unit은 생략할 수 있는데 이 경우도 사실 Unit을 반환하는 것이기 때문에 expression입니다.

fun helloWorld(): Unit {
    println("Hello~")
}

fun helloWorld(): {
    println("Hello2~")
}

7. Array와 List

Kotlin의 리스트는 크게 두 가지로 나뉩니다.

  • List: 불변 (immutable)

  • MutableList: 가변 (mutable)

val array = arrayOf(1, 2, 3)
val list = listOf(1, 2, 3)

서로 다른 타입이 섞인 경우 Any타입으로 추론됩니다.

val array2 = arrayOf(1, "d", 3.4f)
val list2 = listOf(1, "d", 11L)

배열 값 변경

array[0] = 3 // 가능
list[0] = 2 // 오류 – List는 변경 불가
val result = list[0] // 값 가져오기만 가능!

MutableList (예: ArrayList)

val arrayList = arrayListOf<Int>()
arrayList.add(10)
arrayList.add(20)

val로 선언해도 내부 값은 변경 가능합니다. 변수 자체에 새 리스트를 할당하려면 var로 선언해야 합니다.

val arrayList = arrayListOf<Int>()
arrayList = arrayListOf() // 오류 – arrayList가 val로 선언되어 있기 때문!

오늘은 이정도로 마무리..!

3
Subscribe to my newsletter

Read articles from seoyoon jung directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

seoyoon jung
seoyoon jung