Kotlin(코틀린) 기본문법 3. 조건문과 분기

차선호·2023년 3월 29일
0

Kotlin

목록 보기
3/8
post-thumbnail

조건문과 분기


IF

  • 형식
    if (조건){
        실행
    }else if (조건2){
    	  실행
    }else{
    		실행
    }
  • 실행할 문장이 한 줄이면 블록을 생략 가능.

  • 자바와 달리 if문이 값 반환 가능.
    var a = 3
    var b = 5
    val e = if(a<b) a else b // 3

when

  • 자바에서의 switch문에 대응

  • 값이 하나인 경우 콤마나 in 연산자로 값의 범위를 자유롭게 지정하고 싶을 때 사용
    • 코드를 작성할 때 블록으로 코드를 감쌀 수도 있고, 안 할 수도 있음

      val x = 1
          
      when(x){
          1 -> println("x=1")
          2,3 -> println("x=2 or x=3")
          in 4..7 -> println("4<=x<=7")
          else -> println("else")
      }
    • else문은 반드시! 있어야 한다.

  • if 문처럼 사용
    • num % 2를 계산 → 짝인지 홀인지 결정 → 그 값을 num2에 할당

    • 0, 1만 처리하면 될 것 같지만, 전체 조건을 처리하기 위해 else문 꼭 필요

      val num = 10
      val num2 = when (num%2){
          0 -> println("짝수")
          else -> println("홀수")
      }
  • 조건식 반환
    fun main() {
        doWhen(1) // 정수 1
        doWhen("hello") // world
        doWhen(100L) // Long type
        doWhen('x') // String type이 아님
    }
    fun doWhen(a:Any){
        var result = when (a){
            1 -> "정수 1"
            "hello" -> "world"
            is Long -> "Long type"
            !is String -> "String type이 아님"
            else -> "else"
        }
    }

for

  • in 연산자를 통해서 배열을 순회 할 수 있음

  • .. , downTo, step, until : 증가 범위, 증감 간격 조절
    fun main() {
        val num = arrayOf(1,2,3,4)
        for(n in num){
            println(n) // 1; 2; 3; 4;
        }
        for(i in 1..4){ // .. 키워드
            println(i) // 1; 2; 3; 4;
        }
        for(i in 0..10 step 2){
            println(i) // 0; 2; 4; 6; 8; 10;
        }
        for(i in 10 downTo 0 step 2){
            println(i) // 10; 8; 6; 4; 2; 0;
        }
    }
    • step은 일정한 간격으로 증가

    • 일정 간격 감소는 downTo와 step을 함께 써야 하기 때문에 for i in 10..0 step 2 는 작동하지 않음 → 감소할 때는 무조건 downTo 함께 써라!

  • forEach
    val num = arrayOf(1,2,3,4)
    num.forEach { println(it) } //1; 2; 3; 4;
    
    num.forEachIndexed { index, value ->
        println("$index : $value") // 0 : 1; 1 : 2; 2 : 3; 3 : 4;
    }

while & do while

  • 주어진 조건이 참일 때 반복

  • do while은 우선 do 구문들을 실행하고 나서, while 문 조건이 참이면 실행
var x = 5
while (x>0){
    x--
    print(x) // 4; 3; 2; 1; 0;
}
    
var y = 5
do{
    y--
    print(y) // 4; 3; 2; 1; 0;
}while (y>0)

break & continue

  • break

    • 반복문을 즉시 탈출
  • conitnue

    • 아래 명령의 실행을 중단하고 다시 위로 올라가 반복문의 다음을 실행

      var i = 0
      while(i<10){
          i++
          if(i==7) break
          if(i%2==0) continue
          println(i) // 1; 3; 5;
      }

label

  • 레이블이 붙여진 곳으로 이동 가능 (레이블은 특정 반복문에 붙인 이름)

  • 중첩된 반복문에서 원하는 반복문을 탈출하고 싶을 때 사용
out@
for(i in 1..5){
    for(j in 1..5){
        println("$i : $j")
        if(i+j >= 5) break@out
    } 
}
println("end")
// 1 : 1; 1 : 2; 1 : 3; 1 : 4; 1: 5; end;

삼항 연산자가 없는 코틀린

  • 코틀린은 삼항 연산자가 없음

    • if-else가 표현식이기 때문
      • if와 else가 특정 값을 반환 할 수 있기 때문(when문도 동일)

      • 따라서 삼항 연산자가 필요 없음

        var a = 10
        var b = 5
        var max = if(a>b) a else b // 10
profile
dkssud!

0개의 댓글