파라미터: 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
}
val value3: Int? = null
when (value3) {
null -> println()
else -> println()
}
val value5: Boolean? = null
when (value5) {
true -> println()
false -> println()
null->println() //조건으로 갖는 값의 모든 경우 대응 할 것, 생략해도 오류는 아닌데 대응하는 게 좋음
}
val value9:Int=10
when(value9){
is Int->println("value9 is Int")
else->println("value9 is not Int")
}
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
}
val day:String="월"
if(day=="월"){
...
}else if(day=="화"){
...
}else if(day=="수"){
...
}
when(day){
"월"->
"화"->
"목"->}