kang9366
Repository
kang9366
글쓰기
설정
전체 방문자
오늘
어제
  • 분류 전체보기 (143)
    • Programming (70)
      • Java (1)
      • C++ (11)
      • Kotlin (12)
      • Keras (2)
      • Android (34)
      • Jetpack Compose (1)
      • Error Solution (7)
    • CS (36)
      • 자료구조 (13)
      • 운영체제 (1)
      • 알고리즘 (4)
      • 컴퓨터 보안 (8)
      • 기타 (10)
    • Data Science (28)
      • 데이터분석 (7)
      • 머신러닝 (14)
      • 딥러닝 (7)

인기 글

최근 글

최근 댓글

Github · Instagram · Facebook
kang9366

Repository

Programming/Kotlin

[Kotlin] when

2022. 6. 17. 09:54

when

  • 기존 다른 언어에서 사용하던 switch문과 유사하다.
  • JAVA의 default = Kotlin의 else
  • 기존의 switch문과는 다르게 조건으로 일련의 범위를 줄 수 있음
  • is Int~ else같이 타입의 일치 유무를 조건으로 줄 수 있음
  • 따로 break를 해줄 필요없다.
  • 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();
}

 

Kotlin

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

 

파라미터 없이 사용

  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){
"월"->
"화"->
"목"->}
저작자표시 비영리 변경금지 (새창열림)

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

[Kotlin] invoke  (0) 2022.06.23
[Kotlin] 생성자  (0) 2022.06.23
[Kotlin] Unit  (0) 2022.06.17
[Kotlin] 기본형과 참조형  (0) 2022.06.15
[Kotlin] Null Safety  (0) 2022.06.10
    'Programming/Kotlin' 카테고리의 다른 글
    • [Kotlin] 생성자
    • [Kotlin] Unit
    • [Kotlin] 기본형과 참조형
    • [Kotlin] Null Safety
    kang9366
    kang9366

    티스토리툴바