DeveloPiano

[Kotlin] 코틀린 for 문에서 until과 .. 차이점 완벽 정리 본문

Develop/Kotlin

[Kotlin] 코틀린 for 문에서 until과 .. 차이점 완벽 정리

DevPi 2025. 3. 4. 15:24
반응형

코틀린(Kotlin)에서는 for 문을 사용하여 반복문을 쉽게 작성할 수 있으며, 반복 범위를 지정할 때 ..(range 연산자)와 until 키워드를 사용할 수 있습니다. 하지만 이 둘은 동작 방식이 다르기 때문에 적절한 상황에서 선택해야 합니다. 이번 포스팅에서는 ..until의 차이점과 활용법을 예제와 함께 알아보겠습니다.

Thumbnail


📌 for 문과 반복 범위

코틀린의 for 문에서 특정 범위를 반복할 때 두 가지 주요 방식이 있습니다:

  • .. 연산자 (Range)
  • until 키워드

이 두 가지 방법은 유사해 보이지만, 중요한 차이점이 있습니다.


🔹 .. 연산자 (Range)

.. 연산자는 코틀린의 범위 연산자로, 지정한 시작 값부터 끝 값까지 포함하는 범위를 생성합니다.

 

.. 사용 예제

fun main() {
    for (i in 1..5) {
        println(i)
    }
}

출력:

1
2
3
4
5

위 코드에서 1..51부터 5까지 포함하는 범위를 생성하며, for 문이 이를 반복합니다.

 

🔹 .. 사용 시 주의점

.. 연산자는 마지막 값을 포함하기 때문에, 배열이나 리스트의 인덱스를 순회할 때 사용하면 IndexOutOfBoundsException이 발생할 가능성이 있습니다.

fun main() {
    val list = listOf("A", "B", "C")
    for (i in 0..list.size) { // ⚠ 오류 발생 가능
        println(list[i])
    }
}

위 코드에서 list.size3이므로 0..3 범위가 생성됩니다. 하지만 list[3]은 존재하지 않기 때문에 런타임 오류가 발생합니다.


🔹 until 키워드

until 키워드는 범위를 생성할 때 끝 값을 포함하지 않는 연산자입니다. 즉, start until endstart부터 end-1까지 반복합니다.

 

until 사용 예제

fun main() {
    for (i in 1 until 5) {
        println(i)
    }
}

출력:

1
2
3
4

위 코드에서 1 until 51부터 4까지만 반복하며, 5는 포함되지 않습니다.

 

🔹 until의 장점

until을 사용하면 리스트나 배열의 인덱스를 반복할 때 범위 초과 오류를 방지할 수 있습니다.

fun main() {
    val list = listOf("A", "B", "C")
    for (i in 0 until list.size) { // 안전하게 인덱스 순회 가능
        println(list[i])
    }
}

출력:

A
B
C

이 방식은 list.size - 1을 따로 계산하지 않아도 되므로 실수할 가능성이 줄어듭니다.


🎯 .. vs until 비교 정리

연산자포함 범위사용 예제추천 사용 상황

.. 끝 값 포함 1..5 → 1,2,3,4,5 고정된 범위 순회 시
until 끝 값 미포함 1 until 5 → 1,2,3,4 리스트 인덱스 순회 시

✨ 결론

코틀린에서 for 문을 사용할 때 ..until은 각각 다른 목적을 가지고 있습니다.

  • ..끝 값을 포함하는 범위를 만들고 싶을 때 사용합니다.
  • until끝 값을 포함하지 않는 범위를 만들고 싶을 때 사용하며, 리스트 인덱스를 순회할 때 특히 유용합니다.

따라서 사용 목적에 맞게 ..until을 적절히 선택하여 더욱 안전하고 가독성 좋은 코드를 작성해 보세요! 🚀

반응형