- Kotlin에서 조건에 따라 코드의 실행 흐름을 제어하는 기본적인 구문입니다. - Kotlin의 if 문은 다른 언어와 달리 표현식으로 사용될 수 있어, 값을 반환할 수 있는 특징이 있습니다.
특징
설명
조건부 실행
조건에 따라 코드 블록을 실행합니다.
표현식으로 사용
표현식으로 사용되어 값을 반환할 수 있습니다.
다중 조건 처리
else if와 else를 사용하여 여러 조건을 처리할 수 있습니다.
다중 라인 코드 실행
중괄호 {}를 사용하여 여러 줄의 코드를 실행할 수 있습니다.
💡 if문 기본구조
구성 요소
설명
if (조건)
주요 조건을 검사합니다. 이 조건이 참이면 해당 블록의 코드가 실행됩니다.
else if (다른 조건)
추가적인 조건을 검사합니다. 이전 조건들이 거짓이고 이 조건이 참일 때 실행됩니다.
else
모든 이전 조건이 거짓일 때 실행되는 기본 블록입니다.
{ }
각 조건에 대한 코드 블록을 정의합니다. 여러 줄의 코드를 포함할 수 있습니다.
if (조건) {
// 조건이 참일 때 실행되는 코드
} elseif (다른 조건) {
// 다른 조건이 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
💡 if문 사용예시
1. 반환 값이 없는 경우: 단순히 조건에 따라 다른 메시지를 출력합니다.
2. 반환 값이 있는 간단한 경우: 조건에 따라 "양수", "음수", "0"을 반환합니다.
3. 반환 값이 있는 복잡한 경우: 조건에 따라 메시지를 출력하고 a 또는 b 값을 반환합니다.
funconditionIfExp(x: Int, y: Inta: Int, b: Int) {
// 사용예시 -1 : 반환 값이 존재하지 않는 경우if (a > b) {
println("a가 b보다 큽니다")
} else {
println("a가 b보다 크지 않습니다")
}
// 사용예시 -2 : 반환 값이 존재하는 경우 1val result = if (x > 0) "양수"elseif (x < 0) "음수"else"0"// 사용예시 -3 : 반환 값이 존재하는 경우 2val max = if (a > b) {
println("a is larger")
a
} else {
println("b is larger")
b
}
// 사용예시 -4 : 삼항연산자를 사용하기// val resultVal1 = x > y ? a : b // X 사용불가val resultVal2 = if (x > y) a else b
}
[ 더 알아보기 ] 💡 Kotlin에서 삼항연산자도 지원하는 건가?
- Kotlin에서는 전통적인 삼항 연산자 (condition ? ifTrue : ifFalse)를 지원하지 않습니다. - 대신, if-else 표현식을 사용하여 동일한 기능을 구현할 수 있습니다. - 아래와 같이 삼항연산자를 사용하면 오류가 발생하기에 if ~ else 표현식을 통해서 구현하면 됩니다.
- Kotlin에서 조건에 따라 코드의 실행 흐름을 제어하는 기본적인 구문입니다. - Java에서의 switch 문을 대체하며 더 강력하고 유연한 기능을 제공합니다.
특징
설명
다중 조건 검사
여러 조건을 한 번에 검사할 수 있습니다.
표현식으로 사용
값을 반환할 수 있는 표현식으로 사용될 수 있습니다.
다양한 조건 검사 가능
특정 조건에 대한 범위 내에서 값을 검사하거나 혹은 타입에 대한 검사에 대해서 수행할 수 있습니다.
💡 when 문의 기본 구조
- 평가하려는 값에 대해서는 ‘()’안에 넣습니다 : expression - 중괄호(’{}’) 안에는 분기를 넣습니다. 즉, 평가하는 값의 조건에 대한 분기처리 부분을 의미합니다. - 각 검사가 성공했을 때 수행할 작업을 ‘→’을 통해서 구분합니다.
구성 요소
설명
expression
평가할 표현식 (선택적)
value1, value2 등
일치하는 값
in range
범위 내의 값 검사
is Type
타입 검사
else
모든 조건이 일치하지 않을 때의 기본 처리
when (expression) {
value1 -> { /* 코드 블록 */ }
value2 -> { /* 코드 블록 */ }
value3, value4 -> { /* 코드 블록 */ }
in range -> { /* 코드 블록 */ }
is Type -> { /* 코드 블록 */ }
else -> { /* 기본 코드 블록 */ }
}
💡 when 문의 사용예시
1. 기본적인 when 문 : x의 값에 따라 다른 메시지를 출력합니다 2. 값을 반환하는 when 문 : when 문이 값을 반환합니다 3. 타입 검사를 위한 when 문 : when 문을 사용하여 x의 타입을 검사합니다. 4. 함수 호출문 : checkType 함수를 다양한 타입의 인자로 호출하여 각각의 결과를 보입니다.
funconditionWhenExp(x: Int, y: Int) {
// 사용예시 -1 : 기본적인 when 문 사용when (x) {
1 -> println("x is 1")
2 -> println("x is 2")
else -> println("x is neither 1 nor 2")
}
// 사용예시 -2 : 값을 반환하는 when 문val result = when (x) {
0, 1 -> "x is 0 or 1"in2..10 -> "x is between 2 and 10"else -> "x is outside the range"
}
// 사용예시 -3 : 타입 검사를 위한 when 문funcheckType(x: Any) = when (x) {
isInt -> println("x is an Integer")
is String -> println("x is a String")
is List<*> -> println("x is a List")
else -> println("x is of unknown type")
}
// 사용예시 -4 : 함수를 호출하여 값을 출력합니다.
checkType(5) // 출력: x is an Integer
checkType("Hello") // 출력: x is a String
checkType(listOf(1, 2, 3)) // 출력: x is a List
checkType(3.14) // 출력: x is of unknown type
}
1. until: 끝 값을 포함하지 않는 범위를 생성합니다. 예시에서 1 until 5는 1, 2, 3, 4를 포함합니다.
2. step: 범위의 증가 단계를 지정합니다. 예시에서 1..10 step 2는 1, 3, 5, 7, 9를 출력합니다.
3. downTo: 큰 수에서 작은 수로 감소하는 범위를 생성합니다. 예시에서 5 downTo 1은 5, 4, 3, 2, 1을 출력합니다.
4. 범위 연산자 (..): 시작값부터 끝값까지 포함하는 범위를 생성합니다. 예: 1..5는 1, 2, 3, 4, 5를 포함합니다.
5. in 연산자: 값이 범위 내에 있는지 확인합니다. 예: 3 in a는 true를 반환합니다.
6. 괄호를 사용한 범위 연산자: 괄호를 사용하여 범위를 명확하게 지정할 수 있습니다. 예: (1..5)는 1부터 5까지의 범위를 나타냅니다.
// until: 끝 값을 포함하지 않는 범위for (i in1 until 5) {
println(i) // 1, 2, 3, 4 출력
}
// step: 증가 값 지정for (i in1..10 step 2) {
println(i) // 1, 3, 5, 7, 9 출력
}
// downTo: 역순 범위for (i in5 downTo 1) {
println(i) // 5, 4, 3, 2, 1 출력
}
// 범위 연산자val a = 1..5// 1, 2, 3, 4, 5를 포함하는 범위val b = 5 downTo 1// 5, 4, 3, 2, 1을 포함하는 범위val c = 1 until 5// 1, 2, 3, 4를 포함하는 범위 (5는 제외)val d = 1..5 step 2// 1, 3, 5를 포함하는 범위
println(3in a) // true
println(6in a) // false// 괄호를 사용하는 범위 연산자val e = (1..5) // 1, 2, 3, 4, 5를 포함하는 범위val f = (5 downTo 1) // 5, 4, 3, 2, 1을 포함하는 범위val g = (1 until 5) // 1, 2, 3, 4를 포함하는 범위 (5는 제외)val h = (1..5 step 2) // 1, 3, 5를 포함하는 범위
println(3in (1..5)) // true
println(6in (1..5)) // false
@ComponentclassLoopComponent {
/**
* for문 반복문을 사용한 예시
*/funforLoop() {
// 범위를 이용한 for 루프-1 : 1이상 5이하 출력for (i in1..5) {
println(i) // 출력: 1, 2, 3, 4, 5
}
// 범위를 이용한 for 루프-2 : 1이상 5이하 출력val range = 1..5for (i in range) {
println(i) // 출력: 1, 2, 3, 4, 5
}
// 범위를 이용한 for 루프-3 : 1이상 5미만 출력for (i in1 until 5) {
println(i) // 출력: 1, 2, 3, 4
}
// 범위를 이용한 for 루프-4 : 5이하 1이상 출력(역순출력)for (i in5 downTo 1) {
println(i) // 출력: 5, 4, 3, 2, 1
}
// 범위를 이용한 for 루프-5 : 1부터 시작해서 2씩 증가하면서 10 이하의 모든 값(1, 3, 5, 7, 9)이 출력됩니다.for (i in1..10 step 2) {
println(i) // 출력: 1, 3, 5, 7, 9
}
// 범위를 이용한 for 루프-6 : 10부터 시작해서 -2씩 감소하면서 10 이하의 모든 값(10, 8, 6, 4, 2)이 출력됩니다.for (i in10 downTo 1 step 2) {
println(i) // 10, 8, 6, 4, 2 출력
}
// 범위를 이용한 for 루프 -> 1이상 5미만 출력for (i in1 until 5) {
println(i) // 1, 2, 3, 4 출력
}
// 컬렉션을 이용한 for 루프val fruits = listOf("apple", "banana", "cherry")
for (fruit in fruits) {
println(fruit)
}
// 인덱스와 함께 사용for ((index, value) in fruits.withIndex()) {
println("$index: $value")
}
}
}