Coding Memo

Kotlin 조건문/반복문 본문

Language/Kotlin

Kotlin 조건문/반복문

minttea25 2020. 12. 30. 16:59

조건문

 

Java와 거의 비슷하다.

fun main() {
    val a: Int = 1;
    if (a > 0) {
        println("a=$a 이므로 0보다 큽니다.")
    }
}

조건문 예시 결과

참고: 변수 앞에 $을 붙여서 ""안에서 출력 가능

ex) println("a=$a"), println("age=${person1.age}")

 

단, switch 와 비슷한 when 이라는 조건문이 있다.

switch에서 case를 생략한 구문이라고 생각해도 될 듯하다.

switch-case 문에서 case를 뺴고 ':' 대신에 '->'를 사용하고 else를 사용할 수 있다.

 

해당 하는 값이 없을 경우는 else에 있는 구문이 실행이 되고 else도 없을 경우 아무것도 실행되지 않는다.

switch-case문과 마찬가지로 조건이 여러개 맞더라고 가장 상위의 구문이 실행이 된다.

fun main() {
    var a: Int = 5;

    when (a) {
        1 -> println("1")
        2 -> println("2")
        3 -> println("3")
        else -> {
            println("not 1, 2 or 3")
            println("a=$a")
        }
    }
}

when 에시1 결과

when 구문에는 Any 타입을 사용할 수도 있다.

fun main() {
    var a: Any = "Hello";

    when (a) {
        1 -> println("1")
        !is Int -> println("a is not Integer")
    }
}

when 예시2 결과

참고: Any는 모든 타입을 포함하는 최상위 타입이다.


반복문

 

while, do-while 문은 Java와 동일하나, Kotlin의 for문은 in 연산자를 이용한 형태로 조금 다르다. 

for문은 어떻게 보면 Python의 for문과 조금 닮은 것 같기도...

 

for ( [변수] in [시작값]..[끝값])

 

이 방식으로 Java에서의 for ( [변수]=[초기값]; [조건식]; [증/감] ) 와 동일하게 사용할 수 있다.

특이한 점은 [변수] 부분에서 타입을 지정하지 않는 다는 점과 시작 값과 끝 값 사이에 .. (점 2개) 를 넣는다는 점이다.

 

5번 반복하는 예시를 보자.

fun main() {
    for (i in 0..4) {
        println(i)
    }
}

 

for 예시1 결과

i 값을 0에서 시작해서 루프 한번 끝날 때 마다 i++를 실행하여 i 값을 증가 시키고 i==4의 조건이 맞을 때 까지 반복한다.

위에서 말했듯이 i에 대한 타입 지정은 따로 없다.

 

그렇다면 i++ 대신에 i값을 2 또는 3을 증가시키면서 반복문을 쓰려면 어떻게 해야 할까?

-> step을 쓰면 된다.

 

fun main() {
    for (i in 0..10 step 3) {
        println(i)
    }
}

 

for 예시2 결과

 

그렇다면 감소를 시키면서 반복문을 쓰려면?

-> downTo를 이용한다.

 

for ( [변수] in [시작값] downTo [끝값] step [감소량] )

물론, 여기서 step 부분은 생략해도 되고 생략되면 i-- 을 수행한다.

fun main() {
    for (i in 10 downTo 0 step 2) {
        println(i)
    }
}

for 예시3 결과

 

또 한가지 신기한 점은 i를 꼭 숫자로 인식할 필요는 없다는 것이다.

따라서 다음과 같은 구문도 가능하다.

fun main() {
    for (i in 'A'..'Z') {
        print("$i ")
    }
    println()
}

for 예시4 결과

 

Java와 마찬가지로 break와 continue 또한 동일하게 사용 가능하다.

더 편리한 점은 break와 continue를 수행할 loop 구문을 지정할 수 있다는 점이다.

 

2개 이상의 중첩 반복문에서 한 반복문 앞에 loop@를 붙여서 label을 지정할 수 있는데, break@loop, continue@loop과 같이 @loop에 해당하는 구문으로 jump가 가능하다.

(label를 이용하는 방법은 따로 찾아보고 공부해 보아야할 것 같다.)

 

 

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

Kotlin 인터페이스  (0) 2021.01.02
Kotlin 고차 함수 / 람다 함수  (0) 2020.12.31
Kotlin 클래스  (0) 2020.12.30
Kotlin 접근 제어자  (0) 2020.12.30
Kotlin 기본 (memo#1)  (0) 2020.12.29