실무 프로젝트로 배우는 Kotlin & Spring/코틀린 기초

흐름제어

webmaster 2022. 10. 1. 15:37
728x90

If-else

fun main(){
    //if..else 사용
    val job = "Software Developer"

    if(job == "Software Developer"){
        println("개발자")
    }else{
        println("개발자 아님")
    }

    //코틀린의 if..else는 표현식이다.
    //자바의 if..else는 구문이다
    val age: Int = 10
    val str = if(age > 10){
        "성인"
    }else{
        "아이"
    }

    //코틀린은 삼항 연산자가 없다(if..else가 표현식으므로 불필요 하다)
    val a = 1
    val b = 2
    val c = if(b > a) b else a
}
  • if - else 구문이 자바와는 달리 식이다(자바는 구문이다)
    • 식이므로 값을 반환한다.
  • 표현식이므로 삼항 연산자가 필요 없으므로 존재하지 않는다.

when

fun main() {
    //자바 코드를 코틀린의 when 식으로 변환한 코드(자바 최신 switch 문은 식을 반환하기도 한다)
    //자바 코드에서는 break를 작성하지 않으면, 코드가 밑으로 흘러간다.
    val day =  2
    val result = when (day) { //when식을 할당할 수 있다.
        1 -> "월요일"
        2 -> "화요일"
        3 -> "수요일"
        4 -> "목요일"
        else -> "기타"
    }
    println(result)

    //else를 생략할 수 있다.
    when(getColor()){
        //들어올 수 있는 값을 코틀린이 추론할 수 있기 때문에 else를 생략할 수 있다
        Color.RED -> println("red")
        Color.GREEN -> println("green")
    }
    //여러개의 조건을 콤마로 구분해 한줄에서 정의할 수 있다.
    when(getNumber()){
        0, 1 -> print("0 또는 1")
        else -> print("0 또는 1이 아님")
    }
}

enum class Color{
    //두가지 값만 반환할 수 있다.
    RED, GREEN
}

fun getColor() = Color.RED

fun getNumber() = 2
  • 자바의 switch문과 비슷하다.
    • JDK 17이전 버전에서는 Switch문 또한, 구문이기 때문에 값을 반환하지 못했는데, 17 이후 버전부터는 표현식처럼 사용이 가능하다.
    • 실수로 break를 빠트려 발생하는 오류도 많이 발생했다.
  • 코틀린의 when에서는 식을 반환하며, break를 생략할 수 있다.
  • else(default)도 생략이 가능하다
    • 코틀린이 enum class(color)를 추론하여, when절에 else가 없어도 문제없음을 알고 있다(생략 가능)
  • 여러개의 조건을 콤마로 구분해 한 줄에서 정의할 수 있다.

for

fun main() {
    //범위 연산자 .. 를 사용해 for loop 돌리기
    for (i in 0..3) { //범위 연산자를 사용해 쉽게 출력가능(가장 마지막 숫자도 포함된다)
        println(i)
    }

    // until을 사용해 반복한다.
    // 뒤에 온 숫자는 포함하지 않는다.
    for (i in 0 until 3) { //뒤에 숫자 포함 x
        println(i)
    }

    //step 에 들어온 값 만큼 증가시킨다
    for (i in 0..6 step 2) { //값이 step만큼 증가
        println(i)
    }

    //downTo를 사용해 반복하면서 값을 감소시킨다
    for (i in 3 downTo 1) { //값이 downTo 만큼 감소된다
        println(i)
    }

    //전달받은 배열을 반복
    val numbers = arrayOf(1, 2, 3)

    for (i in numbers) {
        println(i)
    }
}
  • ..(범위 연산자)를 사용해 쉽게 출력이 가능하다.
    • 단, 범위 연산자는 마지막 숫자도 포함한다.
  • until을 사용해 마지막 숫자를 제외 할 수 있다.
  • step에 들어온 수만큼 증가 시킬 수 있다.
  • downTo를 사용해 값을 감소시키면서 for문을 돌 수 있다.
  • 전달받은 배열을 반복 할 수 있다.

while

fun main() {
    //자바의 while문과 동일
    //조건을 확인하고 참이면 코드 블록을 실행한 후 다시 조건을 확인
    var x = 5

    while (x > 0) {
        println(x)
        x--
    }
}
  • Java의 while문과 동일

 

728x90

'실무 프로젝트로 배우는 Kotlin & Spring > 코틀린 기초' 카테고리의 다른 글

예외 처리  (0) 2022.10.01
널 안정성  (0) 2022.10.01
함수  (0) 2022.10.01
변수  (0) 2022.10.01
개발 환경 구성하기  (0) 2022.10.01