[Kotlin]if/when문 사용 구분

dada·2021년 8월 23일
0

Kotlin

목록 보기
3/14
post-thumbnail

🟠when 문:

  • 기존 다른 언어에서 사용하던 switch문과 유사
  • JAVA의 default=Kotlin의 else
  • 기존의 switch문과는 다르게 조건으로 일련의 범위를 줄 수 있음
  • is Int~ else같이 타입의 일치 유무를 조건으로 줄 수 있음
  • 따로 break를 해줄 필요X
  • if문처럼 조건에 따른 결과를 변수에 저장 가능

✔java

파라미터: int,char,문자열 리터럴(boolean타입X), 변수,연산식
case값: int,char,문자열 리터럴(true/false X), 변수X 연산식X

int value=5;
switch(value){ 
case 1: case2: System.out.println();
break;
case5: System.out.println();
break;
default: System.out.println();
}

✔코틀린 기본

파라미터 값: 기본타입,문자열 리터럴(boolean타입O),변수,연산식
조건식: 기본타입,문자열 리터럴(true/false O), 변수,연산식,범위

  val value2:Int=10
  val value: Int = 3
    when (value) {
        1 -> println()  //기본리터럴
        2/1 -> println()  //연산식
        value2->println() //변수
        3,5 -> println()  //콤마로 구분해서 사용
        in 5..7 -> println() //범위 값 
        !in 8..9 -> println()
        null -> println()
        else -> println()  
        //모든 case가 아닐때, java의 default와 같은 역할 
        //생략가능하지만 when구문에 대응할 수 있는 모든 경우의 수를 쓰는게 좋음
    }

✔파라미터 없이 사용

  val value2: Int = 4
    when {
        value2 == 1 -> println()
        value == null -> println()
      //value2 < 2 -> println()  
      //value2가 val타입이므로 값이 바뀔 수 없어서 절대 실행될 수 없는 코드라 에러
      //var value2:Int=4 였으면 가능
        else -> println()  //else가 없다면? 아무 결과도 리턴X
    }

✔null을 가질 수 있는 파라미터 사용

    val value3: Int? = null
    when (value3) {
        null -> println()
        else -> println()
    }

    val value5: Boolean? = null
    when (value5) {
        true -> println()
        false -> println()
        null->println()   //조건으로 갖는 값의 모든 경우 대응 할 것, 생략해도 오류는 아닌데 대응하는 게 좋음
    }
    

✔true, false를 리턴하는 when

  val value9:Int=10
    when(value9){
        is Int->println("value9 is Int")
        else->println("value9 is not Int")
    }

✔변수의 값으로 사용(값을 리턴하는 when)

    val value6: Boolean? = null
    val returnval:Int = when (value6) {
        true -> 1
        false -> 2
        else -> 3   //else없으면 오류, null을 가질 수 있는 Boolean타입이므로 모든 경우의 수 작성
     // null -> 3 else대신 null인 경우로 해도됨
    }

    var value10=22
    var result=when(10/3){
        value10->true
        in 5..20->false
        5/2->false
        else->true
    }

    val value6: Boolean= true
    val returnval:Int = when (value6) {
        true -> 1
        false -> 2
    }

🟢if문과 when문은 언제 사용할까?

  • if문: 범위가 넓고 값을 특정할 수 없을 경우
    ex) 연도 데이터: 2019,2020,2021....
  • when문: 범위가 제한되고 값도 특정할 수 있는 경우
    ex)요일 데이터:월,화,수,목,금,토,일
val day:String="월"

if(day=="월"){
...
}else if(day=="화"){
...
}else if(day=="수"){
...
}

when(day){
"월"->
"화"->
"목"->}

profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍

0개의 댓글